C++(四)define可変パラメータマクロ

992 ワード

今日は見たことのないコードを見ました.
#define OFFSET(what) \
printf(#what"  %d
",int(&ptr->what));

解読:
このマクロ
#define OFFSET(what) printf(#what"  %d
",int(&ptr->what));
一般的なマクロフォーマットと同様に、#define xxooのフォーマットです.
しかし、これは可変パラメータマクロであり、C 99コンパイラが新たに追加した特性である.
whatはパラメータで、コンパイラはOFFSET(what)に出会うたびにprintf()で置き換えられ、printfのwhatは二重引用符で「what」になります.
#号の使い方:
入力されたパラメータは、文字列になり、二重引用符を付けます.
つまり、
 printf("what""  %d
",int(&ptr->what));
C++は複数の文字列を1つの文字列に連結することをサポートするため
 printf("what  %d
",int(&ptr->what));

例を挙げます.
#include
#include "stdio.h"
using namespace std;

#define Say_Love_You(what)\
 printf(#what"  I love you
"); int main() { Say_Love_You(qiqi); return 0; }

まとめ:
(一)可変パラメータマクロを利用し、プログラミングを容易にする
(二)読みやすいプログラム