2016-12-15 15 views
2

なぜこれが動作しないのですか(それはアサートに失敗しています...実行したくないのですが)?OS固有の機能をテストするためにOSフラグを設定する

#define OS_MACOSX 0 

#if defined(OS_MACOSX) 
    fructose_assert(1==2); 
#endif 
+0

あなたはそれが定義されているかどうかを確認、その後、何かを定義し、それが真の生成理由を不思議に思う:

は、この関連の質問を参照してください?私はなぜあなたが混乱しているかは分かりません。 –

答えて

3

誤ったテストを使用しているためです。

OS_MACOSX ISは... 0と定義されています。 と定義されているかどうかを尋ねました。それはであれば代わりに掲載しを設定します。

#if OS_MACOSX 
    fructose_assert(1==2); 
#endif 

それがゼロに評価さ何かに定義された、またはすべてで定義されていない場合、#ifは、コードをスキップします。 0以外の値で、条件が満たされてコードがコンパイルされます。 Why do people use #ifdef for feature flag tests?

+0

あなたは正しいです。ありがとう! – user3564870

関連する問題