在isr.c中有<br /><br />void (*InterruptHandlers[MAXHNDLRS])(void)={NULL,};<br /><br />如果只是这样,在ads中编译编译报错,具体为:<br /><br />Error :C2456E: undeclared name, inventing 'extern int NULL'<br />Error :C2922W: '=': cast between function pointer and non-function object.<br />Error :(Serious) C2432E: non-constant initialiser<br /><br />通过比较别人的代码,然后在isr.c中include "def.h",<br />def.h具体为<br /><br />#ifndef __DEF_H__<br />#define __DEF_H__<br /><br />#define U32 unsigned int<br />#define BOOL int<br />#define U16 unsigned short<br />#define S32 int<br />#define S16 short int<br />#define U8 unsigned char<br />#define S8 char<br />#define u32 unsigned int<br />#define u16 unsigned short<br />#define s32 int<br />#define s16 short int<br />#define u8 unsigned char<br />#define s8 char<br />#define TRUE 1<br />#define FALSE 0<br />#define OK 1<br />#define FAIL 0<br />#define NULL 0<br /><br />#endif /*__DEF_H__*/<br /><br />然后编译,居然通过了,这里面的蹊跷是怎么样的呢?????<br /><br />我在vc6.0里面定义void (*InterruptHandlers[MAXHNDLRS])(void)={NULL,};<br />编译正确。<br /><br />所以,这里面因为ads对指针有什么不一样吗? |
|