我使用的是旧版本的 Diab C 编译器。
在我的代码中,我取了一个函数名并将其重新定义为具有相同签名的函数指针。在进行此更改之前,代码有效。更改后,它导致嵌入式系统锁定。
函数指针在头文件中声明为 extern,在一个 .c 文件中定义,并在另一个 .c 文件中使用。当从第二个 .c 文件调用它时,它会导致系统锁定。当我尝试使用 sprintf 添加调试信息时,它最终告诉我这是一个未定义的符号。我意识到头文件未包含在第二个 .c 文件中。当我#included 时,所有内容都已编译并正常工作。
我的问题是,即使符号在调用位置未定义,是否有一些 C 规则允许编译器推断函数签名?据我了解,在我进行任何更改之前很久就应该出现错误。