C ++宏定义包括点?

时间:2016-07-03 14:15:12

标签: c++ c-preprocessor

我有一些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。

1 个答案:

答案 0 :(得分:0)

使用宏和帮助器:

struct FunCaller {
    static auto bar() {FunCall();}
};

#define foo FunCaller{}