是否可以创建一个宏来在C / C ++中创建一致的函数声明?

时间:2013-12-12 03:54:18

标签: c++ function macros c-preprocessor

基本上我想创建一个宏说

DECLARE_FUNC(name, arg1)

将定义函数的名称和参数的名称。

我曾尝试过以下操作但失败了

#define DECLARE_FILTER_FUNC(fname, arg1) (PointCloud<PointXYZ>::Ptr fname(PointCloud<PointXYZ>::Ptr arg1))

然后我将函数定义为

DECLARE_FILTER_FUNC(filterStatOutlierRemoval, inputCloud)
{
    return inputCloud;
}

我期待它扩展到

PointCloud<PointXYZ>::Ptr orcFilterStatOutlierRemoval(PointCloud<PointXYZ>::Ptr inputCloud)
{
    return inputCloud;
}

当我编译时,我得到了

  

错误:在'('token

之前的预期构造函数,析构函数或类型转换

我不确定我做错了什么,但我想要做的是声明一组具有相同声明的过滤器函数,因此我可以将它们作为函数指针传递给更多通用功能。

1 个答案:

答案 0 :(得分:2)

从宏中取出额外的括号。

#define DECLARE_FILTER_FUNC(fname, arg1) PointCloud<PointXYZ>::Ptr fname(PointCloud<PointXYZ>::Ptr arg1)