gpt4 book ai didi

c++ - #if 在#define 里面?

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

我正坐在一些通过#defines 生成大量代码的遗留代码上。现在我知道在 #define 中不可能有 #ifdef,但是 #if 可能吗?我想为特定类型添加一些特化。 (无需进行重大更改,例如使用模板)。以下示例给了我神秘的错误,所以这不是方法:

#define MK_GET(type) \
type get_ ## type (int index) \
{ \
#if type == double \ <-- what i want to add
specialized code... \
#endif
...
} \

MK_GET(double);
MK_GET(int);
MK_GET(string);

最佳答案

您可以使用模板实现:

template<typename T>
struct getter
{
T operator()(int index)
{
// general code
}
};

template<>
struct getter<double>
{
T operator()(int index)
{
// specialized code
}
};

#define CAT(a, b) a ## b
#define MK_GET(type) type CAT(get_, type) (int index) getter<type>()(index)

关于c++ - #if 在#define 里面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8427963/

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