之前在做两个字符串的拼接,一般都是用strcat函数, 即使是宏定义的字符串。
比如定义了宏A, B, 第一反应会用 A"other"这样的拼接方式, 却不会没反应过来 A B 也可以做拼接。
基础不扎实,好二好二。
宏字符串可以这样拼接:
#define A "xxx"
#define B "yyy"
void main()
{
char *str = A B;
printf("str: %s\n", str);
}
编译运行, 就输出 xxxyyy 了。
原因是C中有这样语法规定: 引号引起来的字符串,中间以空格分开,编译器(预处理器)会自动帮你连成一个。
那就是如果有宏 A、B、C、D, 那 char* str=A B C D; 这样也是可以的。
这个原理也是可以应用在长字符串定义上, 比如:
#include <stdio.h>
void main()
{
char *sql = "select name"
"from table1"
"where xxx=111";
printf("sql: %s\n", sql);
}
编译运行, 就输出 sql: select name from table1 where xxx=111 了。
版权声明:本文为CSDN博主「moxiaomomo」的原创文章,遵循CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/moxiaomomo/article/details/53453949
1、在日常编程中,可能遇到通过#define将多个常量字符串连接起来,可使用下述方法:
#define CompanyID "my company"
#define ProductItem "0123456789"
#define HardVersion "PCB-101011"
#define ProductOCR "abcd-efgh-hijk-lmno-xyz"
1>使用空格隔开
#define Product_TracableID CompanyID ProductItem HardVersion ProductOCR
2>可使用“”隔开
#define Product_TracableID "CompanyID""ProductItem""HardVersion""ProductOCR"
两种方式的效果一样,把不同字段的字符串连接组成一个通用的字符串。
————————————————
版权声明:本文为CSDN博主「baowxz」的原创文章,遵循CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/baowxz/article/details/99678718
来源:CSDN
作者:Frankie_He
链接:https://blog.csdn.net/heybeaman/article/details/104606361