先頭へ戻る

プリプロセスで使うマクロを定義する | Programming Place Plus Visual Studio編

Programming Place Plus トップページVisual Studio編

先頭へ戻る

この章の概要

この章の概要です。


プリプロセスで使うマクロを定義する

C言語や C++ では、#define を使ってマクロを定義でき、プリプロセスの処理の中で使用できます。マクロの中でも、引数を持たないオブジェクト形式マクロについては、ソースファイル上での定義だけでなく、コンパイルオプションの中で定義することができます。

マクロ(オブジェクト形式マクロ)については、C言語編第23章を参照してください。

プロジェクト全体と使用できるように定義する方法と、ソースファイル1つを対象にして定義する方法があります。前者の場合、すべてのソースファイルでそのマクロを使用できるようになり、後者の場合はそのソースファイルでだけ使用できます。

プロジェクト全体で使用できるように定義する場合は、以下のように設定します。

  1. プロジェクトのプロパティを開く(方法はこちらのページ
  2. 左側のリストから、【構成プロパティ】>【C/C++】>【プリプロセッサ】を選択
  3. 右側の【プリプロセッサの定義】を選択。右端にあるボタンをクリックして、<編集...> を選択。
  4. 現れたダイアログの一番上の枠に、1行に1つの定義を記入する
    • XYZ のように名前だけ入力した場合は、置換後の結果は 1 になる
    • XYZ=100 のように名前と =値 を入力した場合、その値に置換されるマクロになる

特定のソースファイルだけで使える定義にする場合は、以下のように設定します(2番以降はまったく同じです)。

  1. ソリューションエクスプローラーで、対象のソースファイルを右クリックし、【プロパティ】を選択
  2. あとは同じ。

置換後の値を指定しない場合、1 に置換されるものとして定義されます1。これは、ソースファイル上で #define を使って、置換後の結果を空になるように定義した場合とは異なります。

// XYZ を上記の方法で定義してある

printf("%d\n", XYZ);  // OK. 1 に置換される
// XYZ をソースファイル上で以下のように定義する
#define XYZ

printf("%d\n", XYZ);  // コンパイルエラー。XYZ は空に置換されるため文法エラーになる


参考リンク



更新履歴



Visual Studio編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
Twitter でツイート Twitter をフォロー LINE で送る
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー