26

私はCFLAGSを見ています -

CFLAGS=-g -w -D LINUX -O3 -fpermissive

メイクファイルで。-D フラグは何をしますか? 私はマニュアルページでそれを見ます

-D name
    Predefine name as a macro, with definition 1. 

しかし、私はそれを解釈する方法がわかりません。私の解釈は... LINUX をマクロにして、Linux 環境では -03 と -fpermissive だけを実行するというものです。そうですか?そうでない場合は、何ですか?助けてくれてありがとう

4

2 に答える 2

31

これは、#define LINUX 1コンパイル中のファイルのソース コードにステートメントを追加することと同じです。他のコンパイル フラグには影響しません。これは#ifdef、コード内のステートメントを有効にする簡単な方法だからです。したがって、次のようなコードを作成できます。

#ifdef LINUX
   foo;
#endif

-Dフラグで制御できるマクロが有効になっている場合にのみ有効になります。したがって、ソース ファイルを編集せずに、コンパイル時に条件付きコンパイル ステートメントを有効/無効にする簡単な方法です。

于 2012-04-26T16:12:59.193 に答える
3

とは何の関係もありません-O3。基本的には以下と同じ意味です

#define LINUX 1

コンパイルされたファイルの先頭。

于 2012-04-26T16:13:26.270 に答える