Как я могу создать глобальные переменные, которые совместно используются в C? Если я поместил его в заголовочный файл, то компоновщик жалуется, что переменные уже определяются. Единственный путь состоит в том, чтобы объявить переменную в одном из моих файлов C и вручную вставить extern
s наверху всех других файлов C, которые хотят использовать его? Это звучит не идеальным.
В заголовочном файле пропишите его с extern
.
А в глобальной области видимости одного из c-файлов объявите его без extern
.
В один заголовочный файл (shared.h):
extern int this_is_global;
В каждый файл, в котором вы хотите использовать этот глобальный символ, включите заголовок, содержащий объявление extern:
#include "shared.h"
Чтобы избежать множественных определений компоновщика, только одно объявление вашего глобального символа должно присутствовать во всех ваших единицах компиляции (например: shared.cpp). например: shared.cpp) :
/* shared.cpp */
#include "shared.h"
int this_is_global;
Вы помещаете объявление в заголовочный файл, например,
extern int my_global;
В одном из ваших .c файлов вы определяете его в глобальной области видимости.
int my_global;
Каждый .c файл, который хочет получить доступ к my_global
, включает заголовочный файл с extern
в.
В файле заголовка
файл заголовка
#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"