2013-12-12 21 views
0

基本上我想创建一个宏说是否可以创建一个宏来在C/C++中创建一致的函数声明?

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; 
} 

当我编译我得到

error: expected constructor, destructor, or type conversion before ‘(’ token

我不知道我在做什么错,但我想要做的是声明一组过滤函数都具有相同的声明,所以我可以将它们作为函数指针传递给更通用的功能。

+2

为什么你用圆括号包装定义? –

+2

你应该在查询之前查看预处理器输出。 – chris

+0

是的,我应该有。谢谢你提醒我。我很少发现需要。 – penguin4hire

回答

2

从宏中取出额外的括号。

#define DECLARE_FILTER_FUNC(fname, arg1) PointCloud<PointXYZ>::Ptr fname(PointCloud<PointXYZ>::Ptr arg1) 
相关问题