C中多个宏字符串拼接

来源:互联网 发布:软件编制资质 编辑:程序博客网 时间:2024/05/17 23:40

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




1 0
原创粉丝点击