之前在做两个字符串的拼接,一般都是用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 了。