0
config.hで定義されているプリプロセッサ設定オプションの束があります。私はそうのようにそれらを使用します。#ifで何ができますか?
#if CONFIG_OPTION1
/* do some stuff */
#endif
config.hのが自分の定義が含まれています
#define CONFIG_OPTION1 _DEBUG
#define CONFIG_OPTION2 _DEBUG || (NDEBUG && _WIN64)
...
以上が動作しません。私はこれらの設定オプションを設定(デバッグ、リリースなど)および/または他の定義に基づいてオンまたはオフにしたいと考えています。また、私がしなければ動作しません:それは満たされる必要があるように条件が見えても、
#define CONFIG_OPTION1 defined(_DEBUG) || defined(NDEBUG)
は私が#if CONFIG_OPTION1
内部で取得することはありません。私は#if defined(_DEBUG)
と書いても問題ありませんが、マクロとして#if
が条件として失敗します。これをどうすれば解決できますか?
+1。 http://gcc.gnu.org/onlinedocs/cpp/Defined.htmlによると、「定義された」演算子がマクロ展開の結果として現れた場合、C標準は動作が未定義であると述べています。 – ruakh
@CatPlusPlusこれを行うと、 '#else'のように' #define'をどこかで '0'にする必要がありますか? – David
@Dave:あなたはする必要はありません。定義されていないマクロ名は自動的にゼロとして解釈されます。 – ruakh