Когда вы включаете заголовочный файл, который объявляет и определяет int fanout
в нескольких исходных файлах, вы нарушаете Одно правило определения .
Согласно ODR, может быть только одно определение переменнойв одной единице перевода (Заголовочные файлы + исходный файл).
Чтобы избежать этого,
Вам необходимо использовать ключевое слово extern
.Три простых шага:
- Объявление переменной
extern
В tree.h
:
extern int fanout;
Определите переменную в одном из файлов c (tree.c
).
#include "tree.h"
extern int fanout = 5;
Затем включите tree.h
в любом исходном файле, к которому вы хотите получить доступ fanout
.
В main.c
:
#include "tree.h"
int main()
{
fanout = 10;
return 0;
}