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

博客介绍了创建指定目录下多个文件名有共同路径前缀的文件时,可通过宏定义为字符串添加固定前缀。还提到修改宏定义可实现添加尾巴或插入中间,同时说明了相关编译问题及ANSI C中字符串编译时自动合并的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

#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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值