Защита заголовка / включения не работает?

По какой-то причине я получаю несколько объявлений содержимого в моем файле заголовка, хотя я Я использую защиту заголовков. Мой пример кода ниже:

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 сообщает, что у меня есть несколько определений переменной something. ifndef должен убедиться, что этого не происходит, поэтому я не понимаю, почему это так.

5
задан user1007968 28 October 2011 в 07:16
поделиться