这不是一个真正的问题,因为它已经解决了。但我想在这里分享它,因为有人可能会遇到同样的问题。我很想得到一个更深刻的解释。
我正在使用 Keil μvision3 在 C8051F340 上编程(我认为这与这个问题无关)。在我的main.c我有类似的东西:
... // accessible code
getInput();
... // not accessible after modification
在mobile.c中(忽略不相关的标题、包含、blablabla):
void getInput()
{
...
}
没关系。但是,在我对代码进行了一些修改后,
void getInput(struct SomeStruct *ss)
{
...
}
编译和下载到芯片完成,没有任何错误。虽然我确实发现了一个警告:
*** 警告 L2:参考未解决的外部
符号:GETINPUT
但是我有点懒,我的同事还有很多其他的警告,使我无法阅读。(坏习惯!)
我想学的东西:
- 为什么 Keil 允许这样的东西编译没有错误(在 C 中它绝对应该是一个未声明错误的函数)?
- 对未解决的外部的参考是什么意思?它找到了具有相同名称的函数,但由于它具有不同的参数而无法解析,或者它只是允许任何函数而不检查它在项目中的存在?我找不到如何从中生成汇编代码,所以我不太确定。