关于C语言define宏定义字符串常量

1.问题由来:

本人一直以为宏对于字符串的处理也是直接在预处理时进行替换;但是最近在工作中遇到了字符串宏+1的情况;于是彻底的颠覆了以前的思维;于是乎进行测试验证得出以下结果。

2.测试代码

/*测试*/
#include<stdio.h>
#define HELLO "hello" 
int main() 
{ 		
	printf("%s\n",HELLO+1); 		
	return 0 ; 
}

3.现实的输出结果:

“ello” ;
实际上,宏定义的字符串常量在预编译的时候把HELLO替换成字符串常量(“hello”);所以HELLO+1可以理解为“hello”+1 即常量首地址+1,故输出“ello”.


版权声明:本文为luojian5900339原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。