2011-11-27 8 views
0

私が取り組んでいるメイクファイルでは、gccは-D XOPEN_SOURCE=500 and -D_BSD_SOURCEオプションとともに使用されています。 gcc --helpはこれらの内容を教えてくれません。クイックGoogle検索も役に立たなかった。私はgccのかなりの初心者です、誰かが私にヒントを与えることができますか?これらのgccオプションは何をしていますか?

答えて

4

GCCドキュメント("3.11 Options Controlling the Preprocessor")によれば、-Dスイッチは、それぞれの値5001でマクロ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は素晴らしいです。

+0

すなわち#define

のequlivantであるあなたの答えのおかげで、私:これはあなたの.C、.CPPまたは.hファイルを持っている同様のような定義でありますGCCオプションのインデックスで-Dオプションを見つけることができませんか? – mort

+1

@mort:オプションインデックスはアルファベット順であり、個々のスイッチはダッシュなしでリストされています。だから、 "current_version"の後で "d"の前に "D"を見つけるでしょう。あなたはもっと見えるだけです。 :-) –

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