マクロについて

macro.png

C標準組み込みマクロはこちら

マクロの書き方

¥マーク

マクロ内で改行したかったら、円マーク(¥)を一個だけ入れる。

#マーク

関数形式マクロの置換の並びにおいて、実引数を通常文字列リテラル1化する。

#define MACRO(s) printf(#s)
MACRO(aaaa);//->printf("aaaa");になる。
MACRO("mmm");//->printf("\"mmm"\");になる

##マーク

##マークはなんと、変数名をつなげることができるのだ!
MFC のやっかいなコントロール変数群に使えそう♪

#define MFC(a) IDC_STATIC##a
MFC(0)//IDC_STATIC0 という変数名が得られる!

置換の並びにおいて、前処理字句を連結する。
Cgの長い変数名にも使えそうだし、実際にexampleにそういうコード乗ってた。

エラー

error C1057: マクロ展開中に予期せぬ EOF を検出しました。

マクロ呼び出しの引数の解析中に、ソース ファイルの末尾に到達しました。マクロの呼び出しでの右かっこの付け忘れが原因と考えられます。

あらかじめ用意されている組み込みマクロ

__FILE__ ソースコードのファイルの絶対パス
__func__ 関数名
__LINE__ 行番号
__DATE__ コンパイル日時
__TIME__ コンパイル時間
__STDC__ ANSI規格対応ならば1、ANSI規格非対応ならば0

サポートサイト Wikidot.com