45fan.com - 路饭网

搜索: 您的位置主页 > 电脑频道 > 编程代码 > 阅读资讯:解决ads中关于函数指针转换的很奇怪的问题的方法

解决ads中关于函数指针转换的很奇怪的问题的方法

2016-09-04 17:15:44 来源:www.45fan.com 【

解决ads中关于函数指针转换的很奇怪的问题的方法

在isr.c中有

void (*InterruptHandlers[MAXHNDLRS])(void)={NULL,};

如果只是这样,在ads中编译编译报错,具体为:

Error:C2456E: undeclared name, inventing 'extern int NULL'
Error:C2922W: '=': cast between function pointer and non-function object.
Error:(Serious) C2432E: non-constant initialiser

通过比较别人的代码,然后在isr.c中include "def.h",
def.h具体为

#ifndef __DEF_H__
#define __DEF_H__

#define U32 unsigned int
#define BOOL int
#define U16 unsigned short
#define S32 int
#define S16 short int
#define U8unsigned char
#defineS8char
#define u32 unsigned int
#define u16 unsigned short
#define s32 int
#define s16 short int
#define u8unsigned char
#defines8char
#define TRUE1
#define FALSE0
#define OK1
#define FAIL0
#define NULL0

#endif /*__DEF_H__*/

然后编译,居然通过了,这里面的蹊跷是怎么样的呢?????

我在vc6.0里面定义void (*InterruptHandlers[MAXHNDLRS])(void)={NULL,};
编译正确。

所以,这里面因为ads对指针有什么不一样吗?

computer00

是因为NULL没定义吧?你把NULL改成0,再编译试试?

NULL可不是C语言的关键字.

luocolor

改成0就可以了。!
看来现在的学生,包括我,大多数都被MS的东西惯坏了!
现在突然想起linux下的编程就没有像VC里面那样定义NULL了。
唉~!!!!

 

本文地址:http://www.45fan.com/bcdm/72333.html
Tags: 函数 关于 ads
编辑:路饭网
推广内容
推荐阅读
热门推荐
推荐文章
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部