マクロを一時的に上書きしてから復元する必要があります。お気に入り:
#define FOO X
#save FOO
#define FOO Y
...
#restore FOO
標準の C プリプロセッサで可能ですか? GCCで?
追加。実例について。エラー例外にはグローバル マクロを使用します。のように動作assert
しますが、デバッグ バージョンだけでなく、永続的な使用のために使用されます。そのため、たとえば、通常はマクロ内で (副作用を伴う) 関数を呼び出します。一度定義されますが、定義は永続的ではありません。したがって、私はそれをアプリオリに知りません。一部のコードでは、独自の修正版のマクロが必要ですが、コードの一般的なスタイルを保存したいと考えています。コードの一部で 1 つのマクロを使用し、別の部分で別のマクロを使用すると、見栄えが悪くなります。両方のマクロの目的は同じですが、実装がわずかに異なります。
そのため、元のマクロを一時的に保存し、コードの一部に別のバージョンを使用してから、元のマクロを復元するのがよいでしょう。