在上面的示例中,STRINGIFY是一个函数宏,它将传入的参数转换为字符串常量。在main函数中,我们定义了一个整数变量num,然后使用STRINGIFY宏将其转换为字符串。最后,我们使用printf函数打印出转换后的字符串。 运行上述代码,输出将是: 代码语言:txt 复制 The value of num is: 10 在这个例子中,STRINGIFY(num)将num...
然后,字符串串联功能将这3个相邻的字符串组合成一个字符串: "The square of y is %d.\n" 如果传入的实参中间有空白,则不管有多少,都被转换为一个空格,参数开头和末尾的空白都被删除。例如第3次调用宏时,实参“3 * 2 ”转换为“3 * 2”。 2. 记号黏结(##) 与#运算符类似,##运算符可用于函数式宏...
这个操作有两个特点:(1)代码得到简化 (2)fn 函数名【字符串化】然后组合成一个新的字符串,对数据成员 const char *fn_name 进行初始化 字符串化 宏定义中,通过一个 # 就可以把 一串字符,转换为字符串,这里的一串字符,可以是一个数值,可以是一个函数指针(...
是一种在C语言中使用宏定义来生成字符串的技术。通过使用宏定义,可以将字符代码转换为对应的字符串表示。 在C语言中,字符代码是使用ASCII码来表示的,每个字符都有一个对应的整数值。C宏按字符代码生成字符串的过程如下: 定义宏:首先需要定义一个宏,用于将字符代码转换为字符串。可以使用C语言中的预处理指令#define...
项目中有个头文件中定义了一个宏定义,比如是 #define CFG_LOGGER_NAME uart 然后,在某个C文件中需要讲这个3转换成对应的字符串类型,即为"uart";很明显,如果按以下的几种方式定义,肯定得不到期望的结果: 方式1: #define CFG_LOGGER_NAME_STR "CFG_LOGGER_NAME" ...
#define STR2(R) STR1(R) intmain() { printf("sample rate = " STR2(SAMPLE_RATE)"\n"); return0; } 运行输出 sample rate = 16000 注意: 二级stringfication会将宏定义原样输出,即,如果16000加上括弧(有经验的程序员都懂),则STR2输出的也是带括弧的字符串,这通常不是你想要的 ...
__TIME__: 当前源文件编译的时间字符串。 __LINE__: 当前宏所在的行号。 这些内置的宏定义可以帮助我们在代码中获取一些与编译环境相关的信息,特别是在配合输出调试信息的时候往往起着至关重要的作用。 示例代码: #include <stdio.h> #define DEBUG_LOG(message) printf("[%s:%d] %s: %s\n", __FILE__...
这段代码的意思是,如果定义了DEBUG宏,那么就使用printf函数输出调试信息。否则,就使用一个空语句块来忽略这个宏。在代码中使用DEBUG_PRINT宏可以方便地输出调试信息,而在正式发布时只需要将DEBUG宏注释掉即可。 宏定义技巧六:使用宏定义进行字符串拼接 在C/C++中,我们可以使用宏定义来进行字符串拼接,从而方便地生成一...