做视频网站虚拟主机怎么选,网站死链接查询,wordpress 建单页网站,新网站建设的工作总结宏定义实现字符串引用原理最简单的引用策略使用#进行转义原理
用宏定义实现字符串引用#xff1a; 这种做法在编译的时候直接给宏名所对应的字符串 分配了一个内存地址空间#xff0c;可以进行字符串输出、地址打印、指针操作和索引操作。
最简单的引用策略
最简单的引用策…
宏定义实现字符串引用原理最简单的引用策略使用#进行转义原理
用宏定义实现字符串引用 这种做法在编译的时候直接给宏名所对应的字符串 分配了一个内存地址空间可以进行字符串输出、地址打印、指针操作和索引操作。
最简单的引用策略
最简单的引用策略就是直接用宏定义来定义带有引号的字符串如下代码片所示。
code
#include stdio.h#define STR_HELLO helloint main() {printf(macro define str: %s\n, STR_HELLO);printf(macro define add: %d\n, STR_HELLO);printf(used as pointer: %s\n, STR_HELLO1);printf(used as array : %c\n, STR_HELLO[1]);return 0;
}这种做法在编译的时候直接给STR_HELLO 也就是字符串 “hello” 分配了一个内存地址空间可以进行字符串输出、地址打印、指针操作和索引操作。 terminal
macro define str: hello
macro define add: 4210688
used as pointer: ello
used as array : e使用#进行转义
但有的函数偏偏不学好非要用宏转换来进行操作就变成了这个样子。 code
#include stdio.h#define STR_HI hello
#define __parse_str(tag) #tag
#define parse_str(tag) __parse_str(tag)int main() {printf(macro define str: %s\n, parse_str(STR_HI));printf(macro define add: %d\n, parse_str(STR_HI));printf(used as pointer: %s\n, parse_str(STR_HI)1);printf(used as array : %c\n, parse_str(STR_HI)[1]);return 0;
}这种方式在linux内核里使用的较多。主要是用于dts解析提高可读性但是我个人感觉还不如上面那种好用。 terminal
macro define str: hello
macro define add: 4210688
used as pointer: ello
used as array : e