gpt4 book ai didi

c - 添加两个宏并在预处理阶段转换为字符串

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:37:41 26 4
gpt4 key购买 nike

我想添加两个宏定义并想在预处理阶段本身将结果转换为字符串我尝试了以下方法但它不起作用

#include <stdio.h>

#define TO_STRING_IND(arg) #arg
#define TO_STRING(arg) TO_STRING_IND(arg)

#define ABC 1
#define XYZ 2
#define TOTAL (ABC+XYZ)
#define total_str TO_STRING(TOTAL)


int main()
{
printf("total %d \n",TOTAL);
printf("total_str %s \n",total_str);
return 0;
}

这个程序的输出如下,

total 3 
total_str (1+2)

我希望 total_str 在字符串中为 3。

有什么建议吗?

最佳答案

如果可以使用提升,您还可以在最多 256(BOOST_PP_LIMIT_MAG) 范围内进行预处理器。

#include <stdio.h>
#include <boost/preprocessor/arithmetic/add.hpp>

#define TO_STRING_IND(arg) #arg
#define TO_STRING(arg) TO_STRING_IND(arg)

#define ABC 1
#define XYZ 2
#define TOTAL (ABC+XYZ)
#define total_str TO_STRING(BOOST_PP_ADD(ABC, XYZ))


int main()
{
printf("total %d \n",TOTAL);
printf("total_str %s \n",total_str);
return 0;
}

关于c - 添加两个宏并在预处理阶段转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24818749/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com