我正在尝试创建一个预处理器宏函数,为我正在制作的我自己的 GUI 库注册回调函数。该库旨在通过使用上述宏功能由第三方轻松扩展。
我的问题:我的宏函数包括我认为不允许的其他预处理器指令。我想对我的 REGISTER_CUSTOM_CALLBACK_FUNCTION 进行编码,以允许用户创建自己的小部件并使用主 GUI 库注册自己的回调函数。有什么想法我仍然可以实现我想要做的事情吗?
#define FORWARD_DECLARE_CALLBACK_FUNCTION(callbackFunctName) Integer callbackFunctName(Draw_Box& window, Integer windowIndex, Integer id, Text cmd, Text msg);
#define REGISTER_CUSTOM_CALLBACK_FUNCTION(callbackFunctName) \
#ifndef CUSTOM_CALLBACK_1 \
#define CUSTOM_CALLBACK_1 \
FORWARD_DECLARE_CALLBACK_FUNCTION(callbackFunctName) \
#elif !defined CUSTOM_CALLBACK_2 \
#define CUSTOM_CALLBACK_2 \
FORWARD_DECLARE_CALLBACK_FUNCTION(callbackFunctName) \
#endif
// Intended Usage: In a customers code they will be able to create their own
// Widgets with their own Window Callback functions like this...
REGISTER_CUSTOM_CALLBACK_FUNCTION(progressBarCallback)
... some other code
REGISTER_CUSTOM_CALLBACK_FUNCTION(hyperlinkCallback)
这是每个时钟步骤调用的主窗口回调:
Integer main_callback(Draw_Box& window, Integer windowIndex, Integer id, Text cmd, Text msg)
{
#ifdef CUSTOM_CALLBACK_1
CUSTOM_CALLBACK_1(window, windowIndex, id, cmd, msg);
#endif
#ifdef CUSTOM_CALLBACK_2
CUSTOM_CALLBACK_2(window, windowIndex, id, cmd, msg);
#endif
}
有什么想法可以编写我的 REGISTER_CUSTOM_CALLBACK_FUNCTION 以允许用户创建自己的小部件并使用主 GUI 库注册自己的回调函数?