现在的位置: 首页 > 综合 > 正文

如何解决“重复定义”

2013年10月29日 ⁄ 综合 ⁄ 共 410字 ⁄ 字号 评论关闭

    

        头文件中一般只包含声明,不包含变量的定义,如果没办法必须在头文件中包含定义的话,多次引用该头文件时,常遇到函数或者变量被重复定义的错误,比喻file1.h中定义了int a;file2.h中也定义了 int a;此时在file.c中既包含file1.h也包含file2.h,在预编译是,file1.h与file2.h都会在file.c中展开,就相当于file.c中定义了两次int a;此时会报错redefinition。

     如何解决这个问题呢,当工程较复杂时,我们不可能每个文件去找,此时就可以运用宏开关来解决这个问题。file1.h跟file2.h在定义int a的时候,都用

#ifndef  INT_A
#define INT_A
int a;
#endif

这样,在第一次定义a时,由于没有定义宏INT_A,会执行

#define INT_A
int a;

此时INT_A宏开关已经打开,以后不会再重复的定义a了。

    

抱歉!评论已关闭.