По какой-то причине я получаю несколько объявлений содержимого в моем заголовочном файле, хотя я использую средства защиты заголовков. Мой пример кода ниже:
main.c:
#include "thing.h"
int main(){
printf("%d", increment());
return 0;
}
thing.c:
#include "thing.h"
int increment(){
return something++;
}
thing.h:
#ifndef THING_H_
#define THING_H_
#include <stdio.h>
int something = 0;
int increment();
#endif
Когда я пытаюсь скомпилировать это, GCC говорит, что у меня есть несколько определений переменной что-то. ifndef должен убедиться, что этого не произойдет, поэтому я не понимаю, почему это так.