我有一些无法更改的 C++ 代码,只能通过更改头文件来更改。我有代码,可以编译。
问题是我有一个像这样定义的函数指针(函数指针与我想做的事情有点无关):
foo.bar();
我想用宏或其他东西改变它:
#define foo.bar() FunCall()
据我了解,问题是不能在宏中使用点,还有其他方法吗?
编辑:
更多信息。我得到的代码旨在运行单个实例,但是我正在包装代码以在一个类中运行多个实例。这让我有些头疼,我正在努力克服。
我正在尝试的是使用宏和一些内联函数或完整的第三种方式:
void function()
{
foo.bar();
}
我需要一些代码,可以使上面等同于:
void class::function()
{
EventFuncTypedef f = foo.bar;
(this->*f)();
}
或者
void class::function()
{
class::FunCall();
}
上面所有工作的代码都是尝试让原始代码执行选项 1 或 2。
最佳答案
用一个宏和一个助手:
struct FunCaller {
static auto bar() {FunCall();}
};
#define foo FunCaller{}
关于C++ 宏定义包括点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38170813/