Объявление, инициализация и использование глобальной переменной в том же заголовочном файле

Я пытаюсь использовать переменную, инициализированную в файле заголовка (скажем, x.h), и хочу использовать ту же переменную внутри встроенного кода в том же заголовочном файле. Одна и та же переменная изменяется в другом файле (например, y.c). Как я могу это сделать? Я хотел бы знать хороший способ сделать это.

2 ответа

Вы можете объявить глобальную переменную в файле заголовка как extern, а затем определить ее внутри модуля кода (т.е., ".c" ). Таким образом, вы не получите множество ошибок определения, созданных компоновщиком.

Так, например, в вашем файле заголовка глобально доступный int с именем my_global_var будет иметь объявление в файле .h, которое выглядит так:

extern int my_global_var;

Затем внутри одного файла .c вы определяете и инициализируете его:

int my_global_var = 0;

Теперь вы можете использовать my_global_var в любом другом модуле кода, который включает соответствующий файл заголовка и ссылки с соответствующим .c файлом, содержащим определение глобальной переменной.


Использование зарезервированного слова extern.

Никогда не создавайте переменные в файлах .h, это плохая практика, которая приводит к ошибкам. Вместо этого объявляйте их как extern везде, где вам нужно их использовать, и объявляйте эту переменную только в одном файле .c, где он будет создан и связан с другими местами, которые вы используете.

licensed under cc by-sa 3.0 with attribution.