Я написал следующий код
head.h
int i = 0;
sample.cpp
#include <stdio.h>
#include "head.h"
extern int i;
i = 20;
int main() {
printf("%d \n",i);
return 0;
}
когда я компилирую sample.cpp, компилятор выдает следующую ошибку:
sample.c:5:1: warning: data definition has no type or storage class [enabled by default]
sample.c:5:1: error: redefinition of ‘i’
head.h:1:5: note: previous definition of ‘i’ was here
Это наоборот, extern
объявление должно быть в заголовке и определение в файле реализации и определяется только один раз.
//head.h
extern int i;//sample.cpp
#include <stdio.h>
#include "head.h"
int i = 20;
int main() {
printf("%d \n",i);
return 0;
}
Вы можете объявлять переменная столько раз, сколько вы хотите, но определение должно быть уникальным.
Других решений пока нет …