张子萱小爸爸剧照,我是山主,亚姿雷德
'#'和'##'是两个预处理运算符,只能在预处理的过程中使用。在带参数的宏定义中,
'#'运算符后面应该跟一个参数,预处理器会把这个参数转换为一个字符串。
'##'运算符被称为记号连接运算符,比如我们可以使用##连接两个参数。
带参数的宏定义也是可以使用可变参数的;
#define showlist(...) printf(# __va_args__)
其中...
表示使用可变参数,__va_args__
在于处理中被实际的参数集所替换。
#include<stdio.h> #define str(s) # s //str 就是定义的宏 ,# 运算符会将 s 变为字符串的形式 int main(void){ // printf("%s\n",str(this is my time.)); printf(str(hellow %s num = %d\n),str(this is my life.),520); //若传入的字符串中含有多个空格,输出时只会输出一个空格 return 0; }
#include<stdio.h> #define together(x,y) x ## y int main(void){ printf("%d\n",together(13,14)); printf("%d\n",together(5,20)); return 0; }
#include<stdio.h> #define showlist(...) printf(# __va_args__) int main(void){ showlist(i love it,123456,3.14159,bdsakjhdfc\n); return 0; }
#include<stdio.h> #define printf(format,...) printf(# format,## __va_args__) int main(void){ printf(num = %d\n,520); printf(hellow world!!!\n); return 0; }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论