Estou brincando com o Pico SDK e a extensão no VS Code e parece que, quando produzo um programa em C++ em vez de C, várias opções de hardware não estão mais disponÃveis para inclusão. Especificamente no meu caso, gostaria de usar o ADC.
#include "hardware/adc.h"
Isso funcionou bem com um programa C, mas não está mais disponÃvel em C++.
fatal error: hardware/adc.h: No such file or directory
Por que isso acontece e há algo que eu possa fazer a respeito? Eu preferiria usar C++ para meus programas, pois quero usar algumas das bibliotecas padrão incluÃdas em C++ e, para mim, é mais intuitivo.
O Pico SDK é escrito em C e seus cabeçalhos usam a vinculação C. Ao alternar para C++, o compilador C++ trata os cabeçalhos incluÃdos de forma diferente, a menos que você diga explicitamente para tratá-los como cabeçalhos C.
Em C++, se um cabeçalho for escrito em C, mas não protegido com
extern "C"
, o compilador C++ tenta alterar os nomes das funções (ou seja, alterar seus nomes), o que causa erros de vinculação ou erros de arquivo ausente, dependendo da configuração de inclusão.Além disso, dependendo da extensão do seu arquivo e da configuração do CMake, o sistema de compilação pode procurar os cabeçalhos no lugar errado ou não compilar determinados arquivos como parte do destino.
✅ Como consertar
1. ✅ Use
extern "C"
cabeçalhos C em arquivos C++Enrole
#include
assim:Isso diz ao compilador C++ para tratar esses cabeçalhos C como C , não C++ — para que a vinculação e a resolução de nomes funcionem corretamente.
2. ✅ Verifique seu CMakeLists.txt
Certifique-se de que seu arquivo CMake esteja configurado corretamente para C++.
No seu
CMakeLists.txt
, confirme que você está dizendo para usar C++: