labview的深入探索----如何实现类似C的函数指针调用
C语言中有函数指针的概念,对于相同的参数数量和参数类型,以及相同的函数返回值,通过传递函数指针,可以动态地调用不同的函数实现不同的功能.
我们先看看C的一个函数指针调用的例子:
#include
int max(int x,int y)
{
int z;
if(x>y) z=x;
else
z=y;
return (z);
}
//求最大值
int min(int x,int y)
{
int z;
if(x>y) z=y;
else
z=x;
return(z);
}
//求最小值
int add(int x,int y)
{
return(x+y);
}
//求和
int process(int x,int y,int (*fun)())
{
int result;
result=fun();
return result;
}
int main()
{
int a,b,result;
a=10;
b=5;
result=process(a,b,max);
result=process(a,b,min);
result=process(a,b,add);
}
从上面的C程序可以看出,通过一个PROCESS函数,可以实现不同的函数调用,这就是函数指针的重要用途.LABVIEW是否能实现类似的功能?
通过VI SERVER可以实现类似的功能.我通过一个简单的例子说明实现的过程.
首先定义两个加法和乘法的子VI.

注意,必须定义连接器,而且参数数量和位置必须完全相同(所谓的严格类型定义)

我们先看看C的一个函数指针调用的例子:
#include
int max(int x,int y)
{
int z;
if(x>y) z=x;
else
z=y;
return (z);
}
//求最大值
int min(int x,int y)
{
int z;
if(x>y) z=y;
else
z=x;
return(z);
}
//求最小值
int add(int x,int y)
{
return(x+y);
}
//求和
int process(int x,int y,int (*fun)())
{
int result;
result=fun();
return result;
}
int main()
{
int a,b,result;
a=10;
b=5;
result=process(a,b,max);
result=process(a,b,min);
result=process(a,b,add);
}
从上面的C程序可以看出,通过一个PROCESS函数,可以实现不同的函数调用,这就是函数指针的重要用途.LABVIEW是否能实现类似的功能?
通过VI SERVER可以实现类似的功能.我通过一个简单的例子说明实现的过程.
首先定义两个加法和乘法的子VI.

注意,必须定义连接器,而且参数数量和位置必须完全相同(所谓的严格类型定义)

1
2
关键词: labview函数指

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码