私は、コンパイル時にモジュールを組み込むために使用される多くの定義を持つ設定ファイルを持っています。さらに、これは、定義のためのコードの中で非常によく調べなければならないことを意味します。すべてのチェックには3行が必要ですが、これは1行で行うことができます。1行#if文
#if FUNC_ENABLED
function_optional_call();
#endif
私は何かが好きです。
CALL(function_optional_call(),FUNC_ENABLED);
これは可能なのですか?3行の式を使用する必要がありますか? 私は、すべてのマクロのためにマクロを定義する可能性を知っています。
Skip function call if not defined
しかしgenerall makroを生成することが可能です。
どのコンパイラとバージョンを使用していますか?これはプリプロセッサ固有のものなので、一般的なやり方があるとは思っていません。あなたはいくつかのトリックに頼らざるを得ません。 – Neil
私が使用した(90年代に戻った)Cコンパイラのほとんどは、#define内で#ifを許可しませんでした(したがって、あなたが持つ問題です)。あなたがC++ライブラリであるboostを使うことができない限り(他の答えによると)、それは容易に解決できそうにありません。 – Neil