gpt4 book ai didi

c++ - 向类 : using macro function into header file 添加动态方法

转载 作者:行者123 更新时间:2023-11-28 01:45:03 25 4
gpt4 key购买 nike

尽量避免写重复的代码;我使用宏将方法删除到一个类中。我想在头文件中定义一个宏函数,例如:

破解器.h

#include<message.h>
class Cracker {
#define DECLARE_MSG(MSG_NAME, MSG_TYPE,ALREADY_DEFINED) \
{ \

if(!ALREADY_DEFINED)
{ \
virtual bool cbProcessMsg_##MSG_NAME (API::MSG_NAME##Msg const & msg); \
}\
#include "message.h"
#undef DECLARE_MSG
};

消息.h

DECLARE_MSG(AddOrder , 'A', false);
DECLARE_MSG(DeleteOrder , 'B', true);
DECLARE_MSG(ReplaceOrder , 'C', false);
...

但这段代码确实无法编译,因为我无权在函数外添加 if 语句。

有没有其他方法可以做到这一点?

最佳答案

有几个项目值得强调:

1.宏不知道作用域;删除它的定义的唯一方法是取消定义它。

2。宏按原样粘贴到代码中;然后编译。宏本身不是函数,它是代码生成工具。这意味着即使“ALREADY_DEFINED”为真,您也会得到另一个定义。

3。您要做的是在类定义之外的类中添加一个函数。你就是不能这样做。曾经。

4.Header guards 将为您减轻大中型项目的痛苦;您应该尽早养成使用它们的习惯。

虽然不完全相同,但看起来您想做的是查找工厂模式是什么。

关于c++ - 向类 : using macro function into header file 添加动态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45509542/

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