可读性很强的C语言的函数指针定义
2020-11-19 19:04
通常C/C++程序里面要用到大量的指针,其语法非常难以阅读。比如下面的vp指针类型:
#include
using namespace std;
typedef void (*vp) (float&,float&);
void foo(float &a,float &b)
{
a = a + b;
}
int main()
{
//
float a=1;
float b=2;
vp t=&foo;
t(a,b);
cout
cout
return 0;
}
下面我们就用C自己的宏定义功能,实现其他声明的可读性加强。
====================================================================
#include
using namespace std;
#define DEFINE_FUNCTIONP(POINTER_NAME,RESULT_TYPE,...)\
typedef RESULT_TYPE (* POINTER_NAME) (__VA_ARGS__);
DEFINE_FUNCTIONP(vp,void,float&,float&)
//typedef void (*vp) (float&,float&);
//invalid conversion from void(*) (int,int) to vp {aka void(*) (...)} -fpermissive
//void foo(int a,int b)
void foo(float &a,float &b)
{
a = a + b;
}
int main()
{
//
float a=1;
float b=2;
vp t=&foo;
t(a,b);
cout
cout
return 0;
}
使用环境:
qt 5.2.1
gcc 4.8