昨晚调试个程序,被这破问题搞了大半夜。
因为我在 .h 和 .cpp 文件中使用了 static 的类全局变量,需要在类构造前对这些变量进行初始化
开始的时候 Visual Studio 编译老提示我:
错误 1 error C2143: 语法错误 : 缺少“;”(在“CXGdiplus::m_uGdiplusStatus”的前面) d:/cppcsprjs/gdiplusdemo/xgdiplus.cpp 32 GdiplusDemo
错误 4 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int d:/cppcsprjs/gdiplusdemo/xgdiplus.cpp 32 GdiplusDemo
于是一点点排查,最后几乎把所有的代码都快注释掉了,这次 Visual Studio 提示我:
错误 1 error C2533: “CXGdiplus::{ctor}”: 构造函数不能有返回类型 d:/cppcsprjs/gdiplusdemo/xgdiplus.cpp 41 GdiplusDemo
于是搜索了一下,终于发现原来是我用 UE 敲代码的时候,那个 .h 文件 class 声明结尾的 "}" 之后还有个分号 ";" 被我不小心漏掉了。
折腾了这大半夜竟然是这低级错误,郁闷死。
所以特意把这个贴出来,警示自己不要再犯了 ⊙﹏⊙b汗
本文描述了作者在C++项目中遇到的一个关于static类全局变量初始化的问题及解决方案。由于在.h和.cpp文件中使用了static类型的全局变量,并在类构造前尝试初始化这些变量,导致Visual Studio出现编译错误。最终发现错误原因是.h文件中类声明结束后的分号被遗漏。
761





