Объявление, инициализация и использование глобальной переменной в том же заголовочном файле - PullRequest
4 голосов
/ 29 июня 2011

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

Ответы [ 2 ]

7 голосов
/ 29 июня 2011

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

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

6 голосов
/ 29 июня 2011

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

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

extern int my_global_var;

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

int my_global_var = 0;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...