赞
踩
百度
问题现象:我用CMSIS导入一个keil5的c和c++混合编程的项目,在keil中已经编译通过并下载正常运行。但是在VS CODE中搭建好CMSIS插件环境后导入上面所述的keil5的c和c++混合编程的项目,build失败。并提示一下报错: “/Core/Src/i2c.c error: invalid argument '-std=c++11' not allowed with 'C'” “Core/Src/dma.c error: invalid argument '-std=c++11' not allowed with 'C'” 等等。
解决方式:找到.cproject.yml文件删除- -stdc++11
怎么解决c和c++混合编程时,在c文件中编译出现bool错误,如下data_ring_buffer.h:46:1: error: unknown type name 'bool'
添加:#include <stdbool.h> 头文件
stm32f4xx_it.c
error: invalid argument '-std=c++11' not allowed with 'C'
解决办法:在.cproject.yml文件添加以下两个命令
- - -xc++
- - -std=c++11
问题现象:21.h:26:1: error: unknown type name 'class'
26 | class DF_to_CAT021
| ^
解决办法:在.cproject.yml文件添加以下两个命令
- - -xc++
- - -std=c++11
-
-
- 在 Keil 中,-xc++ 和 -std=c++11 是与 C++ 编译相关的选项。让我为您解释一下它们的含义和用法:
-
- -xc++:
- 这个选项告诉编译器使用 C++ 编译器来处理源代码文件。默认情况下,Keil 使用 C 编译器,但是如果您的项目中包含 C++ 代码,您需要显式地指定 -xc++ 选项。
- 在 Keil 中,您可以通过以下步骤启用 C++ 编译器:
- 打开您的 Keil 项目。
- 转到 “Options for Target”(目标选项)。
- 在 “C/C++” 选项卡中,找到 “Misc Controls”(其他控制)。
- 在 “Misc Controls” 中添加 -xc++。
- 点击 “OK” 以保存更改。
- -std=c++11:
- 这个选项指定了 C++ 标准的版本。在这种情况下,-std=c++11 表示使用 C++11 标准。
- C++11 是 C++ 的一个版本,引入了许多新特性,例如 lambda 表达式、智能指针、范围循环等。
- 如果您的项目中使用了 C++11 特性,您需要在 Keil 中设置 -std=c++11 选项。
- 您可以按照以下步骤设置 C++11 标准:
- 打开您的 Keil 项目。
- 转到 “Options for Target”(目标选项)。
- 在 “C/C++” 选项卡中,找到 “Misc Controls”(其他控制)。
- 在 “Misc Controls” 中添加 -std=c++11。
- 点击 “OK” 以保存更改。
keil里面是这样:
生成的.cproject.yml原来是这样
没有 - -xc++
所以引发上面“invalid argument '-std=c++11' not allowed with 'C'”和“c/c++混合编译.h头文件无法识别关键字class”这两个错误。
- project:
- packs:
- - pack: Keil::STM32F4xx_DFP
- - pack: ARM::CMSIS@5.9.0
- - pack: Keil::ARM_Compiler
- setups:
- - setup: Options for ADSBOUTF429ZGT6
- processor:
- fpu: sp
- add-path:
- - ../Core/Inc
- - ../Drivers/STM32F4xx_HAL_Driver/Inc
- - ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy
- - ../Drivers/CMSIS/Device/ST/STM32F4xx/Include
- - ../Drivers/CMSIS/Include
- - ../User/Adsb_Out
- - ../User/DF_to_CAT021
- - ../User/my_Global_Lib
- - ../User/easylogger/inc
- debug: "on"
- define:
- - USE_HAL_DRIVER
- - STM32F429xx
- misc:
- - C:
- - -std=c99
- C-CPP:
- - -std=c++11
- - -fno-rtti
- - -funsigned-char
- - -fshort-enums
- - -fshort-wchar
- - -ffunction-sections
- - -Wno-packed
- - -Wno-missing-variable-declarations
- - -Wno-missing-prototypes
- - -Wno-missing-noreturn
- - -Wno-sign-conversion
- - -Wno-nonportable-include-path
- - -Wno-reserved-id-macro
- - -Wno-unused-macros
- - -Wno-documentation-unknown-command
- - -Wno-documentation
- - -Wno-license-management
- - -Wno-parentheses-equality
- CPP:
- - -xc++
- - -std=c++11
- ASM:
- - -masm=auto
- Link:
- - --map
- - --load_addr_map_info
- - --xref
- - --callgraph
- - --symbols
- - --info sizes
- - --info totals
- - --info unused
- - --info veneers
- - --strict
- - --summary_stderr
- - --info summarysizes
- linker:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。