keil编译报错 error: #90: function returning function is not allowed
时间: 2024-04-03 22:32:36 浏览: 21
这个错误的原因是你可能在函数中返回了一个函数类型的值,而这是不允许的。在 C 语言中,函数是不允许作为返回值的。
要解决这个问题,你需要检查你的代码,找到返回函数类型的语句并修改它们。你可以考虑使用指针或结构体来替代函数作为返回值。或者你可以将函数调用的结果作为返回值,而不是函数本身。
另外,你也可以检查你的编译器是否支持返回函数类型,如果支持,你可以在编译器的设置中进行配置。但是需要注意的是,这种做法不是标准的 C 语言行为,可能会导致你的代码在其他编译器或平台上出现问题。
相关问题
keil 编译遇到 error: #18: expected a \)"
### 回答1:
在使用Keil进行编译时,遇到“Error”错误通常有许多原因,可能是因为代码的错误,编译器的版本不兼容,或者是环境设置有误等原因。
首先,我们应该仔细查看提示的错误信息,找出具体的错误位置和可能的原因。通常在Keil的编译窗口中会给出详细的错误提示,例如“syntax error”(语法错误),“undefined reference”(未定义的引用)等。
其次,我们应该检查代码中是否存在语法、逻辑等错误。有时候,代码中的错误可能并不明显,需要仔细查看代码进行排除。
还有一个可能导致编译错误的原因是编译器版本不兼容。我们应该确保所使用的Keil版本与开发环境和芯片型号相匹配。
另外,Keil编译器需要指定正确的工程路径、库文件路径、链接脚本等,并检查目标输出路径是否正确。如果这些设置出错,也可能导致编译错误的发生。
总之,在遇到Keil编译错误时,我们需要认真分析、排查错误原因,并在编译前做好所有的环境设置和检查工作,以保证编译的成功。
### 回答2:
Keil编译器是广泛使用的单片机开发工具,但在遇到error错误后,开发者需要查找问题并解决,以使程序能够正常编译。
首先,Keil编译器给出的错误信息需要仔细阅读,通常会提示出错的行数和错误类型。开发者可以通过这些信息大致了解问题所在,然后根据具体情况进行分析。
常见的错误类型包括语法错误、链接错误、语义错误、警告等。语法错误通常是因为程序中存在拼写错误、缺少分号等问题。链接错误可能是由于程序中使用了未定义的函数或变量,需要在程序中添加相应的头文件或定义。语义错误可能是由于程序中存在不符合规范的语句或调用了没有实现的函数。警告则通常是一些问题的提示,但不会影响程序编译和运行。
解决这些问题需要仔细检查程序代码,找出具体原因,并进行相应的修改。对于一些较难解决的问题,可以参考相关的函数库或者咨询专业人士的意见。
此外,在使用Keil编译器进行开发时,建议开发者做好代码备份,及时保存程序代码,以防止代码丢失或遭到不必要的修改。
总之,Keil编译器遇到error错误后,开发者需要认真分析错误类型和具体位置,然后根据具体情况采取相应的措施。只有这样,才能快速定位问题,并进行有效的修复,以确保程序能够正常编译和运行。
### 回答3:
Keil是一个常用的嵌入式开发集成环境,用于编写和调试嵌入式系统的代码。在使用Keil编译时,有时会遇到各种error。下面我们将介绍一些常见的error及如何解决。
1. error: syntax error:这种错误通常是由于语法错误引起的。建议在编写代码时要注意语法,尤其是括号、分号、引号等使用是否正确。
2. error: Undefined symbol:这种错误通常是由于使用了未声明的变量或函数而引起的。解决方法是在变量或函数的前面添加声明,或者检查头文件是否正确引用。
3. error: unable to open source file:这种错误通常是由于Keil无法找到所需的头文件或源文件引起的。解决方法是检查文件的路径是否正确,或者手动将文件添加到工程中。
4. error: Out of memory:这种错误通常是由于编译器无法为程序分配足够的内存而引起的。解决方法是优化代码,减小代码占用的内存空间。或者增加芯片存储器大小。
5. error: Runtime error:这种错误通常是由于程序在运行时出现了错误而引起的。解决方法是检查程序的逻辑是否正确,查找代码中的bug并修复。
综上所述,Keil编译时出现error的原因有很多,主要涉及语法错误、变量和函数的引用问题、文件路径问题、内存分配问题、程序逻辑错误等。解决这些错误的方法也有不同,需要根据具体情况采取相应的措施。为了避免这些错误,建议在编写代码时要认真细致,注意代码的规范性和可读性。
keil5报错error:l6218e
根据引用[1]和引用的描述,"Error: L6218E: Undefined symbol Delay(unsigned) (referred from main.o)"是由于在编译时找不到名为Delay(unsigned)的符号导致的错误。这个错误通常发生在移植代码时,缺少了相关的函数定义或链接库。
解决这个错误的方法有以下几种:
1. 确保移植的代码中包含了Delay(unsigned)函数的定义或声明。检查移植的代码中是否有相关的函数定义或声明,如果没有,需要将该函数的定义或声明添加到代码中。
2. 检查编译器的链接设置。在Keil中,可以通过打开项目的选项对话框,然后选择“链接”选项卡来检查链接设置。确保链接设置中包含了Delay(unsigned)函数所在的库文件或对象文件。
3. 检查编译器的搜索路径。在Keil中,可以通过打开项目的选项对话框,然后选择“搜索路径”选项卡来检查搜索路径设置。确保搜索路径中包含了Delay(unsigned)函数所在的库文件或对象文件的路径。
4. 检查库文件是否正确引入。如果使用了外部库文件,需要确保库文件正确引入到项目中,并且链接设置中包含了库文件的路径。
5. 检查函数命名和参数是否正确。确保函数的命名和参数与调用该函数的地方一致,包括大小写和参数类型。
请注意,具体的解决方法可能因为你的具体情况而有所不同。建议你根据具体的错误信息和代码进行排查和调试。