热门IT资讯网

宏定义中的“#”与“##”

发表于:2024-11-25 作者:热门IT资讯网编辑
编辑最后更新 2024年11月25日,宏定义在C/C++中使用的非常多,一方面定义一些常量,另一方面定义一些通用函数,但是有些宏定义实现较为复杂,尤其是很多带#或##的宏定义,令很多人读起来很不解,下面就简单介绍一下宏定义中的#和##。宏

宏定义在C/C++中使用的非常多,一方面定义一些常量,另一方面定义一些通用函数,但是有些宏定义实现较为复杂,尤其是很多带#或##的宏定义,令很多人读起来很不解,下面就简单介绍一下宏定义中的#和##。

  1. 宏定义里面有个##表示把字符串联在一起。如:
#include #define CAT(x,y) x##yint main(){    char helloworld[] = "hi, hello world!";    printf("%s", CAT(hello, world));    return 0;}
  1. 宏定义中的#表示将其变为字符串。如:
#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;}
0