c – 函数在不应该突然返回时返回
我正在为我的一个暑期班做一个操作系统任务.教师提供了一个目标文件,该文件提供模仿磁盘设备驱动程序行为的功能.然后我们编写一个使用C中的磁盘设备驱动程序的文件系统API.
我正在处理名为Format()的文件系统格式函数,该函数从教师对象文件中调用名为DevFormat()的函数.如果能够成功格式化文件系统,我的函数应返回1,否则返回0.如果DevFormat()能够成功格式化磁盘驱动器,则返回1,否则返回0.这是代码: int Format() { if (!DevFormat()) { printf("Disk drive wasn't formatted successfullyn"); return 0; } <Do some stuff to the file system here> printf("File system successfully formattedn"); return 1; } 我的问题是Format()突然结束而没有返回值.我发现有问题的代码是行:if(!DevFormat()).现在我在C中编写作业,但我正在使用GNU C(g)编译器来编译和链接我的项目,就像老师说的那样.我想说当执行第(if(!DevFormat())行时,Format()突然结束的原因必须对编译器解释我的代码做一些事情(我可能会离开.它只是一个猜测.).我发现如果我将代码更改为if(0 == DevFormat()),我的函数也会突然结束.我可以测试失败的唯一方法是将DevFormat()的返回值赋给int变量,然后检查它. 任何帮助将非常感激.这与C编译器解释我的代码的方式有关吗?难道我错过了一些平凡的东西,以至于我应该为自己感到羞耻吗? 再次感谢您的帮助. 解决方法
我想也许你已经忘记了if语句的括号 – 我想你想写这个:
if (!DevFormat()) { printf("Disk drive wasn't formatted successfullyn"); return 0; } 只有printf语句在if块内,所以无论DevFormat()的返回值如何,每次都会执行return语句.那是C中常见的陷阱:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |