gpt4 book ai didi

C编程,一个宏改变两个位置

转载 作者:太空狗 更新时间:2023-10-29 15:02:16 27 4
gpt4 key购买 nike

struct Error
{
MACRO(1, Connect);
MACRO(2, Timeout);
};

我需要以上述代码生成以下代码的方式定义 MACRO()。

struct Error
{
static const int Connect = 1;
static const int Timeout = 2;
const char * const name[] = {"Connect", "Timeout"};
};

这可能吗?或者有什么替代方法可以实现我想要做的事情?

最佳答案

您不能直接执行此操作,但如果将宏移动到单独的位置(例如单独的文件),则可以:

ma​​cros.hpp

MACRO(1, Connect)
MACRO(2, Timeout)

#undef MACRO

其他文件

struct Error
{
#define MACRO(a, b) static const int b = a;
#include "macros.hpp"

const char * const name [] = {
#define MACRO(a, b) #b,
#include "macros.hpp"
}
};

或者,您可以使用 Boost.Preprocessor 实现类似的效果.

关于C编程,一个宏改变两个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23134206/

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