在GHS编译器中,如果连续有多个分号而没有任何中间语句,则会生成诊断消息(警告)。例如:
void myfunc()
{
}; // warning #381-D: extra ';' ignored.
这似乎不是一个很常见的情况,但是在预处理发生后也会发出此警告,这样,以下内容也会产生警告(在发布时编译时):
#if _DEBUG
#define DEBUG_VAR(x) x
#else
#define DEBUG_VAR(x)
#endif
void myfunc()
{
}
// global variable, used only in debug
DEBUG_VAR(int x); // warning #381-D: extra ';' ignored.
我意识到在这种情况下有一些简单的方法可以解决这个问题,这只是一个说明性的例子。预处理器还有许多其他情况,您最终可能会得到类似的构造。
显然,代码是合法的 c++,而且我从未在我使用过的任何其他编译器上遇到过这样的警告消息。是否有一些合理的解释为什么这个警告会有所帮助,例如,是否存在这个警告可能表明编程错误的特定情况?