首页 > 代码库 > 可读性很强的C语言的函数指针定义

可读性很强的C语言的函数指针定义

 

 

通常C/C++程序里面要用到大量的指针,其语法非常难以阅读。比如下面的vp指针类型:

 

#include <iostream>

 

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 << a << endl;

  cout << "Hello World!" << endl;

  return 0;

}

 

 

 

 

下面我们就用C自己的宏定义功能,实现其他声明的可读性加强。

 

====================================================================

 

#include <iostream>

 

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 << a << endl;

  cout << "Hello World!" << endl;

  return 0;

}

 

 使用环境:

qt 5.2.1

gcc 4.8