複数のマクロのCプリプロセッサのテスト定義済みか
-
12-09-2019 - |
質問
私は、サイトを検索けど、私は本当に簡単な質問である。したがって、ここで探していた答えを見つけられませんでした。
私はそのような何かをしようとしています:
#ifdef _WIN32 || _WIN64
#include <conio.h>
#endif
どのように私はそのようなことを行うことができますか?私はどちらかと窓の検出のために大丈夫だろうよう_WIN32は、両方の32ビットおよび64ビット・ウィンドウのために定義されていることを知っています。私は、プリプロセッサディレクティブでそのように論理演算子を使用できるかどうかで、より興味を持って、はい上記以来、動作しないか、場合ます。
私が取得gccでコンパイルします
警告:#ifdefのディレクティブの最後に余分なトークン、それは基本的には最初のマクロを取り、残りを無視します。
。
解決
試します:
#if defined(_WIN32) || defined(_WIN64)
// do stuff
#endif
名が定義されているかどうか、マクロのテストを定義して、あなたをすることができます結果に論理演算子を適用します。
他のヒント
あなたは#if
と特別な演算子を使用する必要があります defined
する
私はそれがこのよう可能なはずだと思います:
#if defined block1 || defined block2 /*or any other boolean operator*/
/*Code*/
#endif
詳細<のhref = "http://books.google.com.ar/books?id=Nfh5-L3NBTQC&pg=PA536&lpg=PA536&dq=preprocessor+directive+c+logical&source=bl&ots=Ny400rakrd&sig=-bf45YoobTJiiVGoBhtBpA7G82M&hl=es&ei = zzktSqynIt7flQe69O3pCQ&SA = X&OI = book_result&CT =もたらす&resnum = 2#PPA536、M1" REL = "nofollowをnoreferrer">こちら
使用すると、定義されます:
#if defined(A) || defined(B)
#include <whatever.h>
#endif