今日看到一行我没见过的代码:
- #define OFFSET(what) \
- printf(#what" %d\n",int(&ptr->what));
这个宏
- #define OFFSET(what) printf(#what" %d\n",int(&ptr->what));
不过这个是可变参数宏,C99编译器新添的特性
what是一个参数,编译器每遇到OFFSET(what),都会用printf()来代替,printf里面的what会被加双引号变成"what"
#号用法:
传进来的参数,变成字符串,加双引号
也就是:
- printf("what"" %d\n",int(&ptr->what));
- printf("what %d\n",int(&ptr->what));
- #include<iostream>
- #include "stdio.h"
- using namespace std;
- #define Say_Love_You(what)\
- printf(#what" I love you\n");
- int main()
- {
- Say_Love_You(qiqi);
- return 0;
- }
总结:
(一)利用可变参数宏,方便编程
(二)方便阅读程序