gpt4 book ai didi

c++ - 可以用宏来抽象这个逻辑吗?

转载 作者:太空狗 更新时间:2023-10-29 23:09:50 24 4
gpt4 key购买 nike

我有成千上万的函数包装器,它们在内部实际上执行类似的逻辑:

// a, b, ... are variable length parameters of different type

void API_Wrapper(hHandle, a, b, ..)
{
if (hHandle)
return remote_API(hHandle, a, b, ..);
else
return API(a, b, ..);
}

我想使用宏来重用 if-else 逻辑,这样我就可以像这样简单地实现函数:

void API_Wrapper(hHandle, a, b, ..)
{
API_CALL(api_name, hHandle, a, b, ..); // API_CALL is a macro
}

我没有想出好办法。 (注意:我可以通过 ... 和 __va_args__ 解决它,但我们当前使用的编译器不支持此扩展)

有没有人遇到过同样的问题,有什么想法吗?

最佳答案

另一个技巧,没有可变参数宏:

#define API_CALL(hHandle, api_name, arguments) if (hHandle) return remote_##api_name arguments; else return api_name arguments;

void API_Wrapper(int hHandle, int a, double b, char c)
{
API_CALL(hHandle, api_name, (a, b, c));
}

变成:

void API_Wrapper(int hHandle, int a, double b, char c)
{
if (hHandle) return remote_api_name (a, b, c); else return api_name (a, b, c);;
}

关于c++ - 可以用宏来抽象这个逻辑吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3475684/

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