宏定义中的“#”与“##”
发表于:2024-11-25 作者:热门IT资讯网编辑
编辑最后更新 2024年11月25日,宏定义在C/C++中使用的非常多,一方面定义一些常量,另一方面定义一些通用函数,但是有些宏定义实现较为复杂,尤其是很多带#或##的宏定义,令很多人读起来很不解,下面就简单介绍一下宏定义中的#和##。宏
宏定义在C/C++中使用的非常多,一方面定义一些常量,另一方面定义一些通用函数,但是有些宏定义实现较为复杂,尤其是很多带#或##的宏定义,令很多人读起来很不解,下面就简单介绍一下宏定义中的#和##。
- 宏定义里面有个##表示把字符串联在一起。如:
#include #define CAT(x,y) x##yint main(){ char helloworld[] = "hi, hello world!"; printf("%s", CAT(hello, world)); return 0;}
- 宏定义中的#表示将其变为字符串。如:
#include #include#define STRCPY(a, b) strcpy(a ##_p, #b)int main(){ char arrr_p[]="abcdefg"; char *bb = "123456"; STRCPY(arrr, bb); printf("%s\n",arrr_p); return 0;}