私が取り組んでいるメイクファイルでは、gccは-D XOPEN_SOURCE=500 and -D_BSD_SOURCE
オプションとともに使用されています。 gcc --help
はこれらの内容を教えてくれません。クイックGoogle検索も役に立たなかった。私はgccのかなりの初心者です、誰かが私にヒントを与えることができますか?これらのgccオプションは何をしていますか?
0
A
答えて
4
GCCドキュメント("3.11 Options Controlling the Preprocessor")によれば、-D
スイッチは、それぞれの値500
と1
でマクロXOPEN_SOURCE
と_BSD_SOURCE
を定義します。
#define XOPEN_SOURCE 500
#define _BSD_SOURCE 1
ビルド・スクリプトは通常、ソースに「通信」にこれらのようなマクロを「挿入」するコンパイラの能力を活用する:あなたはすべてのソースファイルの先頭にこのコードを持っているのに、あなたがGCCに渡すようです対象プラットフォーム(例えば、オペレーティングシステムのバージョン)に関するコードの詳細。
-D
の "反対の"コマンドラインスイッチは-U
です。#undef
マクロです。
現代のC/C++コンパイラには、ほとんどの(すべてではないが)類似のスイッチが含まれています。たとえば、Visual C++コンパイラは/D
compiler switchを受け入れます。これは、基本的にGCCの-D
スイッチと同じ目的を果たします。今後の参考のために
あなたはGCCコンパイラのコンパイラスイッチをルックアップする必要がある場合、the GCC option indexは素晴らしいです。
1
-D
は、定義を設定します。あなたは、コードの特定の部分の条件付きコンパイルを有効にするために#ifdef _BSD_SOURCE
を使用することができます
#define XOPEN_SOURCE 500
#define _BSD_SOURCE 1
:それは含まれているヘッダファイルを追加するようなものです。
2
-D
は、定義を設定するために使用されます。コンパイルするソースコードは、これらの定義を使用して特定のヘッダーファイルを含めることです。
と同じことをやっなど-D
のだと思う:それは現在コンパイルされたファイルの先頭に
#define XOPEN_SOURCE 500
#define _BSD_SOURCE 1
。
1
これはgccのためのものではありません。
#define XOPEN_SOURCE 500
#define _BSD_SOURCE
1
-D
は
#define XOPEN_SOURCE 500
すなわち
#define
のequlivantであるあなたの答えのおかげで、私:これはあなたの.C、.CPPまたは.hファイルを持っている同様のような定義でありますGCCオプションのインデックスで-Dオプションを見つけることができませんか? – mort
@mort:オプションインデックスはアルファベット順であり、個々のスイッチはダッシュなしでリストされています。だから、 "current_version"の後で "d"の前に "D"を見つけるでしょう。あなたはもっと見えるだけです。 :-) –