requires ansi style prototype怎么修改,keil , 报错
时间: 2024-12-18 17:18:04 浏览: 0
在Keil uVision这样的集成开发环境中,当你尝试编译包含ANSI风格原型函数的C++代码时,可能会遇到报错,因为Keil默认支持的是C++03标准,而ANSI风格的函数声明(如`void func_name();`)通常是在C++11及以后版本才被推荐使用的。
要解决这个问题,你可以按照以下步骤操作:
1. **启用C++11或更高标准**:
- 首先,在项目的属性设置里找到“Build Settings” -> “Tool Settings” -> "C/C++",然后选择“Preprocessor”选项卡。
- 确保"C++ Language Standard"下拉列表选择了C++11、C++14或更高的标准,例如:"C++17"。
2. **更新函数声明**:
- 将`void func_name();`更改为`void func_name() __attribute__((deprecated));`,这表明尽管它现在不推荐,但仍能被编译器接受。但最好直接将函数声明改为C++11风格:
```
void func_name();
```
3. **处理兼容性问题**:
- 如果有依赖于旧版本库或其他非C++11代码的地方,可能需要添加包含头文件`<c++>`或`<cstdint>`等,并使用`#pragma warning(disable : 4996)`来禁用关于非C++11特征的警告。
4. **检查链接器配置**:
- 如果函数是全局的并由其他模块引用,确保链接器选项也指定了相应的C++标准。
如果你已经做了以上调整仍报错,那可能是源代码中有其他语法错误,或者Keil对某些特定的ANSI风格函数处理不友好。仔细检查代码,修复所有的错误,并逐步排查。
阅读全文