общие глобальные переменные в C

Как я могу создать глобальные переменные, которые совместно используются в C? Если я поместил его в заголовочный файл, то компоновщик жалуется, что переменные уже определяются. Единственный путь состоит в том, чтобы объявить переменную в одном из моих файлов C и вручную вставить externs наверху всех других файлов C, которые хотят использовать его? Это звучит не идеальным.

80
задан Claudiu 9 June 2010 в 23:12
поделиться

4 ответа

В заголовочном файле пропишите его с extern. А в глобальной области видимости одного из c-файлов объявите его без extern.

59
ответ дан 24 November 2019 в 09:51
поделиться

В один заголовочный файл (shared.h):

extern int this_is_global;

В каждый файл, в котором вы хотите использовать этот глобальный символ, включите заголовок, содержащий объявление extern:

#include "shared.h"

Чтобы избежать множественных определений компоновщика, только одно объявление вашего глобального символа должно присутствовать во всех ваших единицах компиляции (например: shared.cpp). например: shared.cpp) :

/* shared.cpp */
#include "shared.h"
int this_is_global;
89
ответ дан 24 November 2019 в 09:51
поделиться

Вы помещаете объявление в заголовочный файл, например,

 extern int my_global;

В одном из ваших .c файлов вы определяете его в глобальной области видимости.

int my_global;

Каждый .c файл, который хочет получить доступ к my_global, включает заголовочный файл с extern в.

15
ответ дан 24 November 2019 в 09:51
поделиться

В файле заголовка

файл заголовка

#ifndef SHAREFILE_INCLUDED
#define SHAREFILE_INCLUDED
#ifdef  MAIN_FILE
int global;
#else
extern int global;
#endif
#endif

В файле с файлом, в котором вы хотите, чтобы глобальная работала:

#define MAIN_FILE
#include "share.h"

В других файлах, которым требуется внешняя версия:

#include "share.h"
22
ответ дан 24 November 2019 в 09:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: