我在一个被多次引用的头文件重定义了如下全局变量
#ifndef  MYHEADE_H
#define MYHEADE_H
int x ;
#endif为什么连接器还是告诉我 x重复定义了哪?谢谢

解决方案 »

  1.   

    这个是防止这样的情况//1.h
    #ifndef  MYHEADE_H
    #define MYHEADE_H
    int x ;
    #endif//2.h
    #include "1.h"//3.h
    #include "1.h"
    #include "2.h"防之重复包含。但是对这样的情况无用//2.c
    #include  "1.h"//3.c
    #include "1.h"这样的话编译器并没有捕捉到重复包含,但是链接器捕捉到了多个文件中的同名对象。所以是链接器报错而不是编译器报错。你需要把int x写到一个专门的.c或者.cpp文件中就可以解决这个问题了
      

  2.   

    把x写到MYHEADE_H里
    extern int x;