|
发表于 2011-5-13 02:04:16
|
显示全部楼层
Addr_C=(unsigned int)&port_init; // 错误
~~~~~~~~~~~~~~~~
我的理解是这样的:
1.你的函数代码段是放在FLASH区域的;
2.而你的语法是引用RAM区域的内容
so 这个是不可能正常的。
其实在C语言中早就有函数指针的写法,你这样写是不符合规范的
你在百度中就可以授到得内容
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
int func(int x); /* 声明一个函数 */
int (*f) (int x); /* 声明一个函数指针 */
f=func; /* 将func函数的首地址赋给指针f */
赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。 注2:函数括号中的形参可有可无,视情况而定。
下面的程序说明了函数指针调用函数的方法:
例一、
#include<stdio.h>
int max(int x,int y)
{ return(x>y?x:y); }
void main()
{
int (*ptr)(int, int);
int a,b,c;
ptr=max;
scanf("%d,%d",&a,&b);
c=(*ptr)(a,b);
printf("a=%d,b=%d,max=%d",a,b,c);
} |
|