因为头文件有ifdef....endif这种机制,所以可以在头文件里定义变量,对吗?
因为头文件有ifdef....endif这种机制,防止重复包含头文件,所以可以在头文件里定义变量,对吗?这句话,谢谢~~
作者: winmenaruto 发布时间: 2011-06-13
错误
如果这个头文件被多个cpp包含,会重复定义
如果这个头文件被多个cpp包含,会重复定义
作者: justkk 发布时间: 2011-06-13
头文件当然可以定义变量,但要注意,不要重复定义,要分清楚声明和定义的区别,c++ primer中有详细是说明
作者: bdmh 发布时间: 2011-06-13
是的,可以在头文件里面定义变量,写函数都没有问题。但是,下面是重点:
我们不要忘记头文件的目的,它可能会被多个源文件包含(这里没有重复包含头文件),然后这些文件再编译成一个目标文件。如果你在头文件里面定义变量,相当于,你在包含它的每个文件里都定义了变量,并且是同名,是会出错的。
比如说a.h文件,然后a.c,b.c两个源文件都包含a.h,然后你程序需要将a.c和b.c两个文件编译生成一个目标文件,那么就会出错。
我们不要忘记头文件的目的,它可能会被多个源文件包含(这里没有重复包含头文件),然后这些文件再编译成一个目标文件。如果你在头文件里面定义变量,相当于,你在包含它的每个文件里都定义了变量,并且是同名,是会出错的。
比如说a.h文件,然后a.c,b.c两个源文件都包含a.h,然后你程序需要将a.c和b.c两个文件编译生成一个目标文件,那么就会出错。
作者: liuhex 发布时间: 2011-06-13
如果头文件只有一个源文件引用它,那就可以定义变量
否则编译时会报错
否则编译时会报错
作者: jiuchang 发布时间: 2011-06-13
尽量不要全局变量,
尽量不要static变量。
尽量不要static变量。
作者: healer_kx 发布时间: 2011-06-13