使用vs2019 编译项目时遇到一个非常奇怪的问题,就是成员函数已经声明和实现。编译确报出错误
C2039 “xxx”:不是"xxx"的成员。
文件特点是单行注释较多。
问题代码
// 绘制窗口阴影, bActive:窗口是否激活, bNoState: 正常状态
void styleWindow(bool bActive, bool bNoState);
验证时发现这样写注释也会报同样的问题
/*绘制窗口阴影, bActive:窗口是否激活, bNoState : 正常状态*/
void styleWindow(bool bActive, bool bNoState);
这是官方文档给出的错误例子。vs C2039官网文档
但是我的这个不在官方例子里,怎么看都觉得声明没有任何问题。后来发现是因为 改 // 单行注释语句后面没有空格或者换行,结果导致下面一行的代码vs编译就给忽略了。修改方式就是在注释后面增加空格,或者按Enter键增加一行空数据。这也是够奇怪的。
正确代码:
// 绘制窗口阴影, bActive:窗口是否激活, bNoState: 正常状态
void styleWindow(bool bActive, bool bNoState);
结论:
注释较多时,要习惯性换行,不然会报出奇怪的错误。希望其他小伙伴不要遇到这么奇葩的问题。