1
5
你需要声明和定义,就像你写的那样。 因为它是一个整数,所以可以像您所做的那样在声明中对其进行初始化,并且编译器应该尽可能将其视为编译时常量。但它仍然需要在源文件中定义一个(并且只有一个)定义,否则当不能将其视为常量时,您将得到链接错误。
显然,微软认为标准行为过于混乱,并且“扩展”了语言,以将带有初始化器的声明作为定义;请参见
this issue
. 结果是,如果您也正确地定义了符号,您将得到链接错误(多重定义的符号)。您可以通过禁用语言扩展来获得标准行为(
|
2
1
第一个片段适用于某些环境,但某些编译器确实需要定义,当然,如果您使用常量的地址。 如果您不想通过触摸头部和主体来引入常量,那么仍然有一个古老的枚举技巧:
使某个常量可用作编译时常量,而不需要在主体中定义。 |
3
0
声明应该在头中完成,初始化应该在.cpp上完成。 有一篇关于静态成员变量的有趣文章 here . |
4
0
头文件
代码文件
|
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |