Это макрос препроцессора .
Если определено FILE1_G_
, то все вхождения vextern
заменяются на extern
.Если нет, то они удаляются (заменяются ничем)
Редактировать, чтобы уточнить, основываясь на комментариях ниже:
Это означает, что либо объявлено как extern
, либо нет;затрагивается только слово vextern
.
Что касается варианта использования ... он позволяет файлу .c
определять вещи, "помеченные" с помощью vextern
, определяя FILE1_G_
перед включением этого заголовка.
Значение по умолчанию (FILE1_G_
не определено) означает, что файл .c
, который в настоящее время включает file1.h
, не определил FILE1_G_
и не определяет объекты, которые были отмечены vextern
, но может использовать их, потому что они были объявлены в этом заголовке и определены где-то еще.