【随笔】C++类静态成员变量初始化引发的惨痛教训
事情是这样的,我在某个类中声明了一个静态的map成员, 文件名暂且称之为 xxx.h

然后在 xxx.cc 中全局定义了这个东西,静态成员在类里面只是声明,需要在外边被定义才有内存

然后又在main.cc中声明全局变量时间接调用了s_datas的find函数(它是个map),然后在windows上编译运行,没问题,在linux上gcc4.8就老是说s_datas未定义,还段错误,好死不死我的用的是宏,gdb + core只能定位到这个main.cc这里
这里挠头挠了3个钟........
才发现间接调用了s_datas的find函数,我寻思这s_datas被定义了呀,怎么会未定义,然后灵光一闪,卧槽定义和调用都在全局这里,跟编译顺序有关。。完

浙公网安备 33010602011771号