Я определяю переменную в файле C: int x
, и я знаю, что должен использовать extern int x
, чтобы объявить ее в других файлах, если я хочу использовать ее в других файлах.объявить переменную extern в функции C?
Мой вопрос: где я могу объявить его в других файлах?
Вне всех функций,
// in file a.c: int x; // in file b.c: extern int x; void foo() { printf("%d\n", x); }
в функции (ы), который будет использовать его?
// in file b.c: void foo() { extern int x; printf("%d\n", x); }
Мои сомнения:
- Какой из них правильный ?, или
- Что является предпочтительным, если оба правильны?
См [Что 'extern' переменные в C] (http://stackoverflow.com/questions/1433204/what-are-extern-variables- in-c /) для обширной дискуссии по этому вопросу. Объявление должно быть в заголовке, чтобы оно было написано только один раз - это означает, что вы можете изменить его гораздо легче, чем если двадцать экземпляров декларации в двадцать функций в шести исходных файлах. Оба 'a.c' и' b.c' включают заголовок - он включен в 'a.c', чтобы убедиться, что объявление соответствует определению. Оба варианта, которые вы показываете, являются «технически правильными»; они работают так, как вы хотите. Однако это не желательно. –