Cのdefineマクロ
Cのdefineマクロを勉強中です。
オブジェクト形式マクロと関数形式マクロの2種類ある。
オブジェクト形式マクロは
#define max 100
のように別名にするような書き方
関数形式マクロは
#define tasu(a,b) ((a)+(b)) #define prt(c) printf("%d\n", c) #define MAX(a,b) ((a)>(b)?(a):(b)) /* 大きい方を返す */
のように記述できる。
ちなみに3つめの処理部分は三項演算子。
条件式 ? 真 : 偽
となる。
なお、複数行にわたる場合は\を行末に付ける。
その後ろにコメントを書いたりは出来ない。
#define PRINT(num) (num=(num)*10; \ printf("%d\n",num))
[追記]2010.9.7
#define hoge(x) "hogeは"#x
とすると引数xで#xが置換される。
#define hoge(x) hoge##x##hoge
とすると引数xで##x##が置換される。
なお##x##は端に記述することは出来ない。(例: ##x##hogeはダメ)
参考URL
http://ratan.dyndns.info/MicrosoftVisualC++/macro.html
http://www.geocities.jp/ky_webid/c/039.html
http://programnet.hp.infoseek.co.jp/clangage/preprocessor.html