基本上我想创建一个宏说
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
之前的预期构造函数,析构函数或类型转换
我不确定我做错了什么,但我想要做的是声明一组具有相同声明的过滤器函数,因此我可以将它们作为函数指针传递给更多通用功能。
答案 0 :(得分:2)
从宏中取出额外的括号。
#define DECLARE_FILTER_FUNC(fname, arg1) PointCloud<PointXYZ>::Ptr fname(PointCloud<PointXYZ>::Ptr arg1)