gpt4 book ai didi

C 动态宏选择

转载 作者:行者123 更新时间:2023-12-03 21:42:45 25 4
gpt4 key购买 nike

我想通过在运行时构建其名称来调用宏。我想要一个遵循相同名称规则的宏列表 ERROR_MSG_X其中 X 是错误代码并根据变量调用它们。我有以下功能:

void    print_error(int e)
{
printf("[ERROR] : code (%d)\n\t%s", e, ERROR_MSG_#e); //not proper syntax
}
标题将是这样的:
# define ERROR_MSG_1 "Failed to open file.\n"
# define ERROR_MSG_2 "Failed to read file.\n"
# define ERROR_MSG_3 "Failed to execute abc.\n"
...
我试着弄乱 ###但没有得到我想要的结果。
我对我能做和不能做的事情有很多限制,比如没有外部函数、没有多行宏、没有参数化宏、没有全局变量等。 有没有办法用传递的值计算宏的名称或者你对如何做到这一点有其他建议?我可以有一个带有 msgs 的数组并将其传递给函数,但我真的不想这样做,而且我必须按顺序排列错误代码或浪费内存来存储它们。

最佳答案

宏是在编译前展开的,所以编译本身没有宏展开。通过控制宏定义中的所有重复序列并允许您在只有一处。但是一旦宏扩展代码进入编译器,就不再有宏了。

关于C 动态宏选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66574911/

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