このコードの実行に問題がありました:
#if TRACE
dbgLog = new LogInfo( "PlatypusCE" );
#endif
これは、上で「TRACE」がコメントアウトされていても、一般的なコメントの大きなブロックの直後に発生していました。
//#define TRACE
これを下に追加したら:
#undef TRACE
...つまり、次のようになります。
//#define TRACE
#undef TRACE
...ただし、希望どおりに機能します (「#if TRACE」コードは実行されません)。
定義されていないもの (コメントアウトされているもの) を未定義にする必要は本当にあるのでしょうか? 奇妙に思える。