2015年6月24日水曜日

C言語のお勉強 プリプロセッサ指令

C言語でインクルードするヘッダーファイルを指定する際
#include <stdio.h>
といったように記述する。

この「#」を含むものはプリプロセッサ指令と呼ばれるもの
ヘッダファイルとプリプロセッサ
注意点として、このプリプロセッサ指令はC言語とは関係のない文なので、末尾に「;」をつける必要はない。

  • #include <xxxx.h>  標準システムディレクトリにあるヘッダファイル
  • #include "xxxx.h"    主に自作ヘッダ等。ディレクトリが異なる場合はパスを指定する。
  • #define xxxx yyyy   xxxxをyyyyに置き換える。
  • #undef xxxx            #define xxxxを無効化。未定義の0となる。
  • #if                            続く条件式を判定。
  • #ifdef xxxx              xxxxが定義されているかを判定し、処理を記述できる。
  • #ifndef xxxx            xxxxが定義されていないかを判定し、処理を記述できる。
  • #elseif                     #if、#ifdef、#ifndefの判定以外でさらに条件を判定。
  • #else                       #if、#ifdef、#ifndef、#elseifの判定がFALSEであった場合の処理。
  • #endif                     #ifdef、#ifndefのブロックの最後を示す。


※補足
#define xxxx yyyyのyyyy部分に簡単な関数を記述することでマクロとして利用できる。
C言語のマクロの基本について
ただし、定義に間違いがないように()の位置には要注意

#define xxxxで終わっている場合は未定義(0)になる。

#if、#ifdef、#ifndefは通常のif構文と同じように比較演算子を使ったり、入れ子構造にしたりすることができる。

#ifでしばしば使われるのが
defined(xxxx) xxxxが定義されているかどうかを判定する。
という演算子。

  • #if defined(xxxx)  #ifdef xxxxと同様。
  • #if !defined(xxxx) #ifndef xxxx同様。

ココらへんの使い分けがあるのかどうかは知らない。

プリプロセッサ指令をデバッグに利用することもできるらしい。
デバッグとプリプロセッサ指令

0 件のコメント:

コメントを投稿