我如何教 Visual Studio 关于 __fp16 的代码?
How can I teach Visual Studio Code about __fp16?
我有一个用 arm-none-eabi 编译器编译的 Cortex-M4F 微控制器的 makefile 项目,我正在为一些浮点数使用 __fp16 存储类型。我正在使用 Visual Studio Code 来编辑代码,并使用 makefile 来编译。
我的代码编译正常,但是 Visual Studio 代码无法识别 __fp16 存储类型。
我正在使用 c_cpp_properties.json 配置编译器和 compile_commands.json。
{
"configurations": [
{
"name": "Mac",
"includePath": [
"${workspaceFolder}/**",
"${workspaceFolder}/../**",
"/usr/local/FreeRTOSv10.2.0/FreeRTOS/**"
],
"defines": [
"DEBUG=1",
"FIRMWARE_VERSION=\"DUMMY\""
],
"compilerPath": "/usr/local/bin/gcc-arm-none-eabi-8-2018-q4-major/bin/arm-none-eabi-gcc",
"compilerArgs": [
"-mcpu=cortex-m4",
"-march=armv7+fp",
"-mfpu=fpv4-sp-d16",
"-mfloat-abi=hard",
"-mfp16-format=ieee"
],
"intelliSenseMode": "gcc-arm",
"cStandard": "c11",
"compileCommands": "${workspaceFolder}/compile_commands.json"
}
],
"version": 4
}
如何教 Visual Studio 代码关于 __fp16
存储类型?我认为它会发现具有 compilerArgs
设置和 -mfp16-format=ieee
参数的类型,但它似乎没有什么不同(我在这里尝试了各种组合......)。
这看起来像是 Intellisense 错误。 Intellisense 在您键入时快速编译代码,只是为了捕获简单的错误。但这不是完整的 GCC 编译器。 Intellisense 不生成 ARM 代码,它只检查合法的 C++。
您可以通过将 __fp16=float
添加到 c_cpp_properties.json
中的 defines
来欺骗 Intellisense。如果 documentation 是正确的,那就是 不是 传递给实际的编译器,只是传递给 Intellisense。
我有一个用 arm-none-eabi 编译器编译的 Cortex-M4F 微控制器的 makefile 项目,我正在为一些浮点数使用 __fp16 存储类型。我正在使用 Visual Studio Code 来编辑代码,并使用 makefile 来编译。
我的代码编译正常,但是 Visual Studio 代码无法识别 __fp16 存储类型。
我正在使用 c_cpp_properties.json 配置编译器和 compile_commands.json。
{
"configurations": [
{
"name": "Mac",
"includePath": [
"${workspaceFolder}/**",
"${workspaceFolder}/../**",
"/usr/local/FreeRTOSv10.2.0/FreeRTOS/**"
],
"defines": [
"DEBUG=1",
"FIRMWARE_VERSION=\"DUMMY\""
],
"compilerPath": "/usr/local/bin/gcc-arm-none-eabi-8-2018-q4-major/bin/arm-none-eabi-gcc",
"compilerArgs": [
"-mcpu=cortex-m4",
"-march=armv7+fp",
"-mfpu=fpv4-sp-d16",
"-mfloat-abi=hard",
"-mfp16-format=ieee"
],
"intelliSenseMode": "gcc-arm",
"cStandard": "c11",
"compileCommands": "${workspaceFolder}/compile_commands.json"
}
],
"version": 4
}
如何教 Visual Studio 代码关于 __fp16
存储类型?我认为它会发现具有 compilerArgs
设置和 -mfp16-format=ieee
参数的类型,但它似乎没有什么不同(我在这里尝试了各种组合......)。
这看起来像是 Intellisense 错误。 Intellisense 在您键入时快速编译代码,只是为了捕获简单的错误。但这不是完整的 GCC 编译器。 Intellisense 不生成 ARM 代码,它只检查合法的 C++。
您可以通过将 __fp16=float
添加到 c_cpp_properties.json
中的 defines
来欺骗 Intellisense。如果 documentation 是正确的,那就是 不是 传递给实际的编译器,只是传递给 Intellisense。