古いバージョンのDiabCコンパイラを使用しています。
私のコードでは、関数名を取得し、同じシグネチャを持つ関数ポインタとして再定義しました。この変更を行う前に、コードは機能していました。変更後、組み込みシステムがロックされました。
関数ポインタは、ヘッダーでexternとして宣言され、1つの.cファイルで定義され、別の.cファイルで使用されました。2番目の.cファイルから呼び出されると、システムがロックアップします。sprintfを使用してデバッグ情報を追加しようとすると、最終的にそれが未定義のシンボルであることがわかりました。ヘッダーファイルが2番目の.cファイルに含まれていないことに気付きました。#includeすると、すべてがコンパイルされ、正しく機能しました。
私の質問は、シンボルが呼び出し場所で定義されていなくても、コンパイラが関数シグネチャを推測できるようにするCルールはありますか?私の理解では、変更を加えるずっと前にエラーがあったはずです。