我正在 VS Code 中尝试 Pico SDK 和扩展程序,但当我用 C++ 而不是 C 语言编写文件程序时,似乎很多硬件选项都无法使用了。具体来说,我更倾向于使用 ADC。
#include "hardware/adc.h"
这在 C 程序中运行良好,但在 C++ 中不再可用。
fatal error: hardware/adc.h: No such file or directory
为什么会这样?我该怎么办?我更喜欢用 C++ 来编写程序,因为我想使用 C++ 附带的一些标准库,而且对我来说,C++ 更直观。
Pico SDK 是用 C 编写的,其头文件使用C 链接。当您切换到 C++ 时,C++ 编译器会以不同的方式处理包含的头文件,除非您明确告诉它将它们视为 C 头文件。
在 C++ 中,如果头文件是用 C 编写的但没有使用 保护
extern "C"
,C++ 编译器会尝试对函数进行名称修改(即更改其名称),这会导致链接错误或丢失文件错误,具体取决于包含设置。此外,根据文件的扩展名和 CMake 设置,构建系统可能会在错误的位置查找标题或不将某些文件作为目标的一部分进行编译。
✅ 如何修复
1.✅在 C++ 文件中使用C 头文件
extern "C"
#include
像这样包装你:这告诉 C++ 编译器将这些 C 头文件视为 C而不是 C++ — — 因此链接和名称解析可以正常工作。
2.✅检查你的 CMakeLists.txt
确保您的 CMake 文件已正确设置为 C++。
在您的中
CMakeLists.txt
,确认您告诉它使用 C++: