Keil C语言编程常见错误分析
一、 Warning 280: unreferenced local variable
在 C 语言编程中, Warning 280 错误是指局部变量 i 在函数中未作任何的存取操作。解决方法是消除函数中 i 变量的宣告及即定义的参数,在程序中并未调用。
例如,如果在函数中定义了一个局部变量 i,但并没有使用它,那么编译器就会发出 Warning 280 错误。解决方法是删除该变量的定义或将其用于函数中。
二、 Warning 206: missing function-prototype
Warning 206 错误是指函数未作宣告或未作外部宣告。解决方法是将函数的宣告写在程序的最前端,如 void Music3(void),如果是其他文件的函数则要写成 extern void Music3(void)。
例如,如果在程序中调用了 Music3 函数,但没有在前面宣告该函数,那么编译器就会发出 Warning 206 错误。解决方法是将 Music3 函数的宣告写在程序的最前端。
三、 Error 318: can't open file 'beep.h'
Error 318 错误是指在编译程序过程中找不到 beep.h 文件。解决方法是编写一个 beep.h 的包含档并存入到工作目录中。
例如,如果在程序中使用了指令 #include "beep.h",但却找不到 beep.h 文件,那么编译器就会发出 Error 318 错误。解决方法是创建一个 beep.h 文件并存入到工作目录中。
四、 Error 237: function already has a body
Error 237 错误是指函数名称重复定义。解决方法是修正其中的一个函数名称,使得函数名称都是独立的。
例如,如果在程序中定义了两个相同名称的函数,那么编译器就会发出 Error 237 错误。解决方法是修改其中的一个函数名称,使得函数名称都是独立的。
五、 WARNING 16:UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
WARNING 16 错误是指 DelayX1ms 函数未被其他函数调用,也会占用程序记忆体空间。解决方法是去掉 DelayX1ms 函数或利用条件编译 #if …..#endif。
例如,如果在程序中定义了 DelayX1ms 函数,但没有被其他函数调用,那么编译器就会发出 WARNING 16 错误。解决方法是删除 DelayX1ms 函数或使用条件编译。
六、 WARNING 206: missing function-prototype
WARNING 206 错误是指程序中有调用 DelayX1ms 函数,但该函数没定义。解决方法是编写 DelayX1ms 的内容编写完后也要作宣告或作外部宣告。
例如,如果在程序中调用了 DelayX1ms 函数,但没有定义该函数,那么编译器就会发出 WARNING 206 错误。解决方法是编写 DelayX1ms 函数的内容并作宣告或作外部宣告。
七、 WARNING 1: UNRESOLVED EXTERNAL SYMBOL
WARNING 1 错误是指符号 MUSIC3 未被解析。解决方法是检查文件是否添加到工程里,检查函数是否被定义且未被调用。
例如,如果在程序中调用了 MUSIC3 函数,但编译器不知道该函数的定义,那么编译器就会发出 WARNING 1 错误。解决方法是检查文件是否添加到工程里,检查函数是否被定义且未被调用。
八、 ERROR 107: ADDRESS SPACE OVERFLOW
ERROR 107 错误是指数据空间已经不足。解决方法是更改 Memory Model 设置或根据自己的要求设置变量的空间。
例如,如果在程序中定义了许多函数,每个函数中又定义了许多局部变量,那么数据空间可能不足。解决方法是更改 Memory Model 设置或根据自己的要求设置变量的空间。