Como fazer com que a cadeia de ferramentas Linux GCC do Eclipse CDT resolva os cabeçalhos de biblioteca padrão C ++?

12

No Ubuntu 12.04 LTS, instalei o plug-in Eclipse CDT e abri o novo projeto hello world para testar tudo. Quando eu estava criando o projeto, escolhi a única cadeia de ferramentas: "Linux GCC"

Quando o projeto é criado, no entanto, ele diz que

#include<iostream>
#include<cstdlb>

não foram resolvidos. Assim, linhas com coute endlnão podem ser usadas e não podem ser encontradas std.

using namespace std; também está causando problemas.

Como posso #includereconhecer minhas diretrizes para os cabeçalhos de biblioteca padrão, para dar suporte ao código usando o stdespaço para nome?

Muhammad Khan
fonte
Esses erros persistem mesmo depois de você Project> Build All?
Eliah Kagan
2
Pode ser uma pergunta estúpida, mas você criou um novo projeto especificamente como um projeto C ++ em vez de um projeto C?
26512 bazz

Respostas:

4

Se você teve o mesmo problema que eu, suspeito que o seu projeto foi criado, mas a conclusão do código / o realce do código falharam? Acabei de encontrar algumas notas que podem ser úteis. Aqui está o que eu fiz:

  • Projeto-> Propriedades

  • Geral em C / C ++

  • Caminhos e Símbolos

  • selecione o idioma apropriado

  • Clique em "Adicionar" e adicione os diretórios específicos da versão do compilador

Para a linguagem 'GNU C ++', adicionei:

  /usr/include
  /usr/include/c++/4.6
  /usr/include/c++/4.6/bits
  /usr/include/i386-linux-gnu
  /usr/include/i386-linux-gnu/bits
  /usr/include/c++/4.6/debug
  /usr/include/c++/4.6/i686-linux-gnu
  /usr/include/c++/4.6/i686-linux-gnu/bits

Para "GNU C", adicionei:

  /usr/include
  /usr/include/i386-linux-gnu
  /usr/include/i386-linux-gnu/bits

TBH, não acho que todos os diretórios acima sejam realmente necessários (você provavelmente pode remover os diretórios 'bits'), mas a lista acima funcionou para mim na época.

Agora estou usando o Eclipse Indigo (versão 3.7.2) do eclipse.org e ele localiza e adiciona automaticamente os diretórios de inclusão corretos. A lista é diferente para mim:

/usr/include/c++/4.6
/usr/include/c++/4.6/i686-linux-gnu
/usr/include/c++/4.6/backward
/usr/lib/gcc/i686-linux-gnu/4.6/include
/usr/local/include
/usr/lib/gcc/i686-linux-gnu/4.6/include-fixed
/usr/include/i386-linux-gnu
/usr/include

Claramente, adicione apenas os diretórios de inclusão que realmente existem no seu sistema ;-)

jamesodhunt
fonte
Bem, isso não funciona para mim - embora eu esteja no Debian Stretch de 64 bits. Mas adaptei suas sugestões à minha plataforma.
Einpoklum