Ключевое слово extern
перед функцией означает внешнюю связь .
Это позволяет использовать функции, определенные в других единицах перевода в ваш собственный исходный файл.
Другими словами, он позволяет вам использовать fghRestoreState()
в другом файле, который не содержит его объявления.
Принимая во внимание, ключевое слово static
подразумевает Internal Linkage
, то есть функция должна быть видимой только в файле, в котором она определена и объявлена.
Проще говоря, это говорит компилятору, что я буду использовать эту функцию только в этом исходном файле,скрыть его от всех других файлов в моем проекте.
Ошибка, поскольку, как указано выше, существует конфликт в использовании двух ключевых слов вместе.
Вы не можете указать компилятору разрешить всем файлам видеть эту функцию(используя extern
) и еще раз скажите, скрывайте его от всех других файлов (используя static
).
Поэтому выберите ключевое слово в соответствии с вашим использованием функции.