您的位置:控制工程论坛网论坛 » 嵌入式系统 » 引用没有声明的外部函数可能会导致严重问题

zhiy66

zhiy66   |   当前状态:在线

总积分:6528  2025年可用积分:0

注册时间: 2007-12-18

最后登录时间: 2012-01-11

空间 发短消息加为好友

引用没有声明的外部函数可能会导致严重问题

zhiy66  发表于 2008/11/30 17:29:19      626 查看 0 回复  [上一主题]  [下一主题]

手机阅读

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函数的情况下,仍然能正确输出,为什么哪?

1楼 0 0 回复