Eu configurei o CDT para o eclipse e escrevi um programa simples hello world C:
#include <stdio.h>
int main(void){
puts("Hello, world.");
return 0;
}
O programa é compilado e executado corretamente, mas o eclipse continua mostrando este ponto de interrogação amarelo ao lado da declaração de inclusão que diz "Unresolved inclusion: <stdio.h>"
quando eu coloco o mouse sobre ele.
Não afeta a execução do programa, mas acho bastante irritante.
Alguém tem ideia de como removê-lo?
c
eclipse
eclipse-cdt
standard-library
Derrick Zhang
fonte
fonte
Respostas:
O compilador que o Eclipse está usando é capaz de resolver os símbolos perfeitamente, então o código será compilado corretamente.
Mas o preenchimento de código / indexador ou pré-processador que o Eclipse está usando não sabe onde
stdio.h
existe.Você precisa especificar o caminho do sistema de arquivos onde
stdio.h
está localizado.A documentação do Eclipse descreve isso em várias seções para o compilador:
E se o preenchimento de código / indexador ou pré-processador especificamente também não puder localizar
stdio.h
:A localização exata de
stdio.h
dependerá do sistema para o qual você pretende escrever o código. Se você estiver escrevendo código para o mesmo sistema em que está executando o Eclipse, o local padrão é/usr/include/stdio.h
para Linux, macOS, Cygwin, etc.Se você estiver fazendo compilação cruzada para um sistema de destino separado / remoto (por exemplo, Android, Raspberry Pi, STM32), ele estará localizado em algum lugar do SDK que você instalou para esse sistema. Você precisará consultar essa documentação específica do SDK.
fonte
Achei essas respostas (incluindo a aceita) um tanto enigmáticas.
Para mim, eu tive que adicionar o caminho onde stdio.h está localizado (como @ardnew disse). No Eclipse, você abre as Propriedades do seu projeto, expande "C / C ++ General" e seleciona "Paths and Symbols".
Certifique-se de ter adicionado o
include
diretório para cada idioma que está usando. (No meu caso, eu precisava apenas adicioná-lo ao GNU C ++.)fonte
/usr/bin/xcode-select --install
e então você será capaz de apontar o Eclipse para/usr/include/
apenas adicionando à base de conhecimento, acabei de fazer isso no win7 com cygwin.
isso é o que parece funcionar para mim.
inclua caminhos para c:
inclua caminhos para c ++:
isso me dá uma compilação limpa de hello world.
fonte
Vá para Projeto> Propriedades> C / C ++ Geral> Inclui pré-processador> Provedores e selecione ambos:
Para cada um deles selecione também a subentrada: "Usar provedor global compartilhado entre projetos".
Testado em Eclipse 4.8.0 no Ubuntu 16.04 com um hello world C e C ++.
fonte
Isso pode resolver o problema. (Desculpem o inglês ruim)
fonte
Estou usando o Eclipse com Cygwin e isso funcionou para mim:
Vá para Projeto> Propriedades> C / C ++ Geral> Inclui pré-processador ...> Provedores e selecione "CDT GCC Configurações do compilador integrado Cygwin [Compartilhado]".
fonte
Estou trabalhando com várias configurações de compilador cruzado , onde preciso usar locais diferentes para os arquivos de cabeçalho STD (e outras variáveis de ambiente).
A solução foi configurar o indexador para que ele use a configuração ativa.
Infelizmente, devido a algum bug no eclipse , a opção não é armazenada localmente, então você tem que usar a configuração do espaço de trabalho se quiser salvar a configuração quando abrir o eclipse novamente.
Janela -> Preferências -> C / C ++ -> Indexador -> Usar configuração de compilação ativa
Isso fará com que o eclipse use o compilador correto que é definido com a configuração Cross GCC ativa do projeto.
fonte
Como as principais respostas observam, é necessário especificar onde as pastas de construção estão localizadas, que podem ser adicionadas por meio de uma caixa de diálogo acessada clicando com o botão direito do mouse no projeto e selecionando Propriedades-> C / C ++ Geral-> Caminhos e Símbolos.
A questão restante é quais caminhos precisam ser adicionados.
Se você configurou o gcc corretamente para acesso de linha de comando e precisa saber quais são os caminhos de inclusão padrão que ele usa, basta perguntar; dependendo de qual idioma você está interessado, use:
... isso irá listar as configurações padrão do compilador que são usadas ao invocar gcc (e este comando também funciona se "gcc" for realmente um apelido para clang, como no OSX).
Na parte inferior estará a lista de diretórios de inclusão:
Se você inserir os diretórios listados aqui, na ordem listada, no diálogo de caminhos e símbolos do Eclipse, o CDT do Eclipse deve ser capaz de localizar os cabeçalhos padrão e talvez alguns cabeçalhos adicionais específicos para seu sistema operacional.
(Agradecemos a resposta de devnull a uma pergunta relacionada.)
fonte
No ADT, fiz o seguinte:
fonte
Normalmente, o Eclipse deve ser capaz de resolver automaticamente os arquivos de inclusão padrão. Ele faz isso chamando gcc e perguntando sua configuração. Muito provavelmente o Eclipse não está encontrando seu gcc (ou pelo menos não a versão que você usa para compilar).
Em vez de especificar todos os caminhos de inclusão padrão nas configurações do projeto, você provavelmente deseja se certificar de que o Eclipse encontre o gcc. Adicione o diretório onde gcc é encontrado à variável de ambiente PATH antes de iniciar o Eclipse.
Se você deseja que projetos diferentes usem compiladores diferentes, convém ajustar as opções de descoberta. Eles estão ocultos por padrão, então primeiro habilite-os em Janela> Preferências> C / C ++> Configurações de páginas de propriedades> Exibir página "Opções de descoberta". Em seguida, você pode encontrá-los em C / C ++ Build> Discovery Options nas propriedades do projeto.
fonte
Estou usando o IDE CodeWarrior baseado em Eclipse para projetos incorporados e acabei de resolver esse problema excluindo e adicionando novamente os endereços de origem para Propriedades do Projeto-> C / C ++ Geral-> Caminho e Sybols-> Incluir Diretórios. Isso significa que há muitos motivos para aceitar a mensagem "Inclusão não resolvida:" e também há muitas soluções.
fonte
Um erro que tive ao configurar caminhos e símbolos é que inicialmente configurei os caminhos de inclusão para um idioma diferente. Estou trabalhando com CDT e Cygwin gnu C ++. Portanto, você deve configurar símbolos e caminhos na linguagem GNU C ++.
fonte
Também definido
${COMMAND}
paragcc
LinuxDebaixo:
Substituir:
com:
Se você não fizer isso, o Eclipse stdout mostrará:
e registros em
${HOME}/eclipse-workspace/.metadata/.log
show:porque
${COMMAND} ${FLAGS}
estão vazios, e assim o Eclipse tenta executar o-E
que vem a seguir.Gostaria de saber se podemos definir corretamente as variáveis
COMMAND
eFLAGS
nas configurações, mas tentei adicioná-los como variáveis de construção e não funcionou.Versão C ++ da pergunta: Como resolver "Inclusão não resolvida: <iostream>" em um arquivo C ++ no Eclipse CDT?
Testado em Eclipse 2020-03 (4.15.0), Ubuntu 19.10 e este projeto Makefile mínimo com fontes existentes .
fonte
Você verifica se ele compila a partir da linha de comando? Para mim ajuda no Linux, instale libc-dev.
fonte