ads中关于函数指针转换的很奇怪的问题
2007-01-20 15:12
399 查看
在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 U8 unsigned char
#define S8 char
#define u32 unsigned int
#define u16 unsigned short
#define s32 int
#define s16 short int
#define u8 unsigned char
#define s8 char
#define TRUE 1
#define FALSE 0
#define OK 1
#define FAIL 0
#define NULL 0
#endif /*__DEF_H__*/
然后编译,居然通过了,这里面的蹊跷是怎么样的呢?????
我在vc6.0里面定义void (*InterruptHandlers[MAXHNDLRS])(void)={NULL,};
编译正确。
所以,这里面因为ads对指针有什么不一样吗?
computer00
是因为NULL没定义吧?你把NULL改成0,再编译试试?
NULL可不是C语言的关键字.
luocolor
改成0就可以了。!
看来现在的学生,包括我,大多数都被MS的东西惯坏了!
现在突然想起linux下的编程就没有像VC里面那样定义NULL了。
唉~!!!!
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 U8 unsigned char
#define S8 char
#define u32 unsigned int
#define u16 unsigned short
#define s32 int
#define s16 short int
#define u8 unsigned char
#define s8 char
#define TRUE 1
#define FALSE 0
#define OK 1
#define FAIL 0
#define NULL 0
#endif /*__DEF_H__*/
然后编译,居然通过了,这里面的蹊跷是怎么样的呢?????
我在vc6.0里面定义void (*InterruptHandlers[MAXHNDLRS])(void)={NULL,};
编译正确。
所以,这里面因为ads对指针有什么不一样吗?
computer00
是因为NULL没定义吧?你把NULL改成0,再编译试试?
NULL可不是C语言的关键字.
luocolor
改成0就可以了。!
看来现在的学生,包括我,大多数都被MS的东西惯坏了!
现在突然想起linux下的编程就没有像VC里面那样定义NULL了。
唉~!!!!
相关文章推荐
- 关于成员函数指针和普通函数指针的转换
- 关于指针作为函数参数传递的理解,对比普通变量作为函数参数的需注意点,其实就是行参和实参的问题。
- 关于指针数组、数组指针、指针函数、函数指针等的问题
- 关于类的静态成员函数指针的问题
- 关于使用equals()函数报 空指针 的错误问题
- 关于函数指针类型强制转换的一些摸索
- 多继承下函数指针强制转换所引发的诡异问题(CCNotificationCenter)
- 关于局部指针变量 函数调用后 该指针的问题
- 关于类成员函数指针的调用问题
- 关于函数指针的问题
- 关于c++ 函数指针的问题
- <C语言>关于函数返回值是指针,取不到值的问题研究
- 关于函数指针的一个问题
- 关于空指针类型的类变量的成员函数访问的问题
- 关于函数返回值为引用和指针的问题
- 关于结构指针类型数组做函数参数的一个问题#include<stdio.h>typede
- 关于函数返回值是指针的问题
- 从一段经典错误代码说起——关于局部变量指针和函数传参的问题分析
- php关于使用iconv(...)函数对字符进行中文转换时,遇到的一个问题
- C语言学习4: 函数返回值与传入参数,关于函数值传递和类型隐性转换,变量不同的作用域,static变量,多文件编译例如两个C文件,显示函数调用语句跳转,递归,斐波那契数列,多文件编译相同变量的问题。