使用#define替换来标准化返回参数和函数参数

时间:2014-04-14 05:05:23

标签: c++ c-preprocessor

我将有许多具有相同签名(返回参数和函数参数)的函数,并且这些参数很长并且可能随时间而变化。但是我可能有数百个这样的函数,我认为使用#define宏来说明参数应该是什么方便,这样我只需要在一个地方更改它们,如下所示:

#define ARGS const Object& ref, float x, float y

#define RET QVector<Object>

这样我就可以这样使用它:

RET func1(ARGS); //extern header declaration

但是像这样使用#define不能编译。让#define做到这一点有诀窍,还是根本不可能?

2 个答案:

答案 0 :(得分:0)

假设您的所有函数都接受两个float参数并返回int,您可以拥有:

#define FUN(name) int (name)(float x, float y)

FUN(func1)
{
   std::cout << "func1" << std::endl;
   return 1;
}

FUN(func2)
{
   std::cout << "func2" << std::endl;
   return 2;
}

// use of functions
// func1(1.0, 1.0);
// func2(2.0, 2.0);

答案 1 :(得分:0)

#include<stdio.h>

#define RET void
#define ARGS (int a,int b)

RET func ARGS;

int main()
{

func(10,20);

}
RET func ARGS
{
printf("a and b is %d and %d",a,b);
return;

}

这是你想要的? 这对我有用。