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++ であり、私が使用した他のコンパイラでこのような警告メッセージに遭遇したことはありません。この警告が役立つ理由についての合理的な説明はありますか?たとえば、この警告がプログラミング エラーを示している可能性がある特定のケースはありますか?