すでに解決されているので、これは実際には問題ではありません。しかし、誰かが同じ問題に遭遇する可能性があるため、ここで共有したいと思います。そして、私はこれについてもっと深い説明を得たいと思っています.
私は 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 では、間違いなくエラーが宣言されていない関数である必要があります)。
- REFERENCE MADE TO UNRESOLVED EXTERNALは何と言っていますか? 同じ名前の関数が見つかりましたが、パラメーターが異なるために解決できませんでしたか、それともプロジェクト内の存在を確認せずに関数を許可するだけですか? そこからアセンブリ コードを生成する方法が見つからなかったので、よくわかりません。