因为头文件有ifdef....endif这种机制,所以可以在头文件里定义变量,对吗?

因为头文件有ifdef....endif这种机制,防止重复包含头文件,所以可以在头文件里定义变量,对吗?这句话,谢谢~~

作者: winmenaruto   发布时间: 2011-06-13

错误
如果这个头文件被多个cpp包含,会重复定义

作者: justkk   发布时间: 2011-06-13

头文件当然可以定义变量,但要注意,不要重复定义,要分清楚声明和定义的区别,c++ primer中有详细是说明

作者: bdmh   发布时间: 2011-06-13

是的,可以在头文件里面定义变量,写函数都没有问题。但是,下面是重点:
我们不要忘记头文件的目的,它可能会被多个源文件包含(这里没有重复包含头文件),然后这些文件再编译成一个目标文件。如果你在头文件里面定义变量,相当于,你在包含它的每个文件里都定义了变量,并且是同名,是会出错的。
比如说a.h文件,然后a.c,b.c两个源文件都包含a.h,然后你程序需要将a.c和b.c两个文件编译生成一个目标文件,那么就会出错。

作者: liuhex   发布时间: 2011-06-13

如果头文件只有一个源文件引用它,那就可以定义变量
否则编译时会报错

作者: jiuchang   发布时间: 2011-06-13

尽量不要全局变量,
尽量不要static变量。

作者: healer_kx   发布时间: 2011-06-13