1

プリプロセッサ ディレクティブで技術的な問題が発生しています。

#ifdef, #define  

私は Makefile によってビルドされたプログラムを持っており、それをビルドする 2 つのオプションがあります: スタンドアロンまたは組み込み。
私は次のようなことをしました:

#ifdef _mdimode_
   //code for embedded
#else
   //code for standalone (default)
#endif

そして、組み込み目的でコンパイルするときのメインファイルに、次のように書きました。

#define _mdimode_

しかし、g ++はそれを認識または理解していないようです。それは常にelseに入り、組み込みバージョンのコードをコンパイルすることはありません。

情報:
GNU Make 3.82
g++ (GCC) 4.6.1 20110908 (Red Hat 4.6.1-9)
ファイル拡張子: .C

4

1 に答える 1

1

これは、詳細情報がない場合の推測です。コードはメインファイルとは別のファイルにあると思います。その場合、は#defineプロジェクトのその部分に伝播しません。コードを含むファイル、またはその中にあるヘッダーに設定する必要があります#include

#defineコンパイルコマンドのオプションでを設定することもできます。

g++ -c -D_mdimode_ mycode.C
于 2012-06-28T10:57:41.073 に答える