using a function without a valid prototype is VERY dangeours.
在一个函数中调用另外一个文件中定义的函数,但是这个函数没有进行声明,会出什么问题哪?
大多数的情况下可能会出现问题,有些情况下,可能是幸运不会出现问题。
看下面这段代码:
unsigned long ulWater_Max_Value=0xABCDEFUL;
Puthexbyte(ulWater_Max_Value>>24);
Puthexbyte(ulWater_Max_Value>>16);
Puthexbyte(ulWater_Max_Value>>8);
Puthexbyte(ulWater_Max_Value);
其中Puthexbyte函数在另外一个c文件中进行了定义,但是在该文件对应的.h文件中,我没有对这个函数进行声明。
这样,当运行上面的代码的时候,会导致错误的结果,输出的数据全部为0。
改正的方法是,为每个外部函数在.h文件做一个相应的声明。每个需要调用这个函数的文件都要包含这个.h头文件。
仍然是上面的代码,如果把变量定义为unsigned int 形式,却可以输出正确结果。这有点奇怪,绝对是侥幸,但是,为什么会对哪?即:
unsigned int ulWater_Max_Value=0xABCD;
//Puthexbyte(ulWater_Max_Value>>24);
//Puthexbyte(ulWater_Max_Value>>16);
Puthexbyte(ulWater_Max_Value>>8);
Puthexbyte(ulWater_Max_Value);
在不声明Puthexbyte函数的情况下,仍然能正确输出,为什么哪?
用户1410124 2008-6-18 22:03