c 语言宏定义实现字符串常量添加固定头或尾

有的时候需要创建打开一个指定目录下的多个文件,各个文件名都有共同的路径前缀,用宏定义,来实现给 字符串添加固定的前缀:

#include<stdio.h>

#define LOG_PATH "/work/temp/"
#define LOG_FILE(x) LOG_PATH x

int main()
{
	printf("%s\n",LOG_FILE("log1"));
	return 0;
}

输出结果:
#./a.out
/work/temp/log1

同样,添加尾巴或者是将其塞入到某一串中间,只需要修改 宏 LOG_FILE(x) 的定义即可。

惭愧,如此简单,想了好久,愣是把 宏定义中的 # ## 二次定义等等折腾老半天,最后连宏定义函数+sprintf都用上了。原来如此。(对于## #传入字符串作为实参,编译都通不过的。)

原理: 在ANSI C中引入的新特性:""包含的字符串,在没有任何可见字符(不包括空格,换行,tab)分隔,写在一起的时候 将在编译时自动合并成一个字符串处理。

#include<stdio.h>

#define A "a123"
#define B "b456"

int main()
{
    printf("%s\n", A B);
    printf(A   B"\n");
    return 0;
}
==》输出:
a123b456
a123b456

发布了96 篇原创文章 · 获赞 27 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/u012459903/article/details/95661541