O que são erros de identificação não declarados? Quais são as causas comuns e como corrigi-las?
Exemplos de textos de erro:
error C2065: ' cout' : identificador não declarado
'cout' não declarado (primeira utilização nesta função)
Na maioria das vezes eles vêm do esquecimento de incluir o arquivo de cabeçalho que contém a declaração de função, por exemplo, este programa dará um 'identificador não declarado' erro:
int main() {
std::cout << "Hello world!" << std::endl;
return 0;
}
Para consertá-lo, temos de incluir o cabeçalho:
#include <iostream>
int main() {
std::cout << "Hello world!" << std::endl;
return 0;
}
Se você escreveu o cabeçalho e o incluiu corretamente, o cabeçalho pode conter o cabeçalho errado include guard.
Para ler mais, veja http://msdn.microsoft.com/en-us/library/aa229215(v=vs.60).aspx.
Outra fonte comum de erro de principiante's ocorre quando se escreve mal uma variável:
int main() {
int aComplicatedName;
AComplicatedName = 1; /* mind the uppercase A */
return 0;
}
Por exemplo, este código daria um erro, porque você precisa utilizar std::string
:
#include <string>
int main() {
std::string s1 = "Hello"; // Correct.
string s2 = "world"; // WRONG - would give error.
}
void f() { g(); }
void g() { }
O "g" não foi declarado antes da sua primeira utilização. Para corrigi-la, ou mova a definição de g
antes de f
:
void g() { }
void f() { g(); }
Ou adicione uma declaração de g
antes de f
:
void g(); // declaration
void f() { g(); }
void g() { } // definition
Este é o Visual Studio específico. Em VS, você precisa adicionar #include "stdafx.h"
antes de qualquer código. Código antes de ser ignorado pelo compilador, então se você tiver isto:
#include <iostream>
#include "stdafx.h"
O #include <iostream>
seria ignorado. Você precisa movê-lo para baixo:
#include "stdafx.h"
#include <iostream>
Sinta-se à vontade para editar esta resposta.
Em C e C++ todos os nomes têm de ser declarados antes de serem utilizados. Se você tentar usar o nome de uma variável ou uma função que não't foi declarada você receberá um "identificador" não declarado; erro.
No entanto, as funções são um caso especial em C (e apenas em C) no sentido em que não'não tem de as declarar primeiro. O compilador em C irá assumir que a função existe com o número e tipo de argumentos, como na chamada. Se a definição real da função não corresponder, você receberá outro erro. Este caso especial para funções não existe em C++.
Você corrige este tipo de erros certificando-se de que as funções e variáveis são declaradas antes de serem utilizadas. No caso do printf' você precisa incluir o arquivo de cabeçalho
<stdio.h>(ou
Para funções padrão, recomendo que você verifique, por exemplo, este site de referência, e procure pelas funções que deseja utilizar. A documentação para cada função diz-lhe de que ficheiro de cabeçalho necessita.
É como usar a função sem declará-la. <stdio.h> o arquivo de cabeçalho conterá o função printf(). Incluir o ficheiro de cabeçalho no seu programa é a solução para isso. Algumas funções definidas pelo usuário também podem ser erradas quando não declaradas antes de usá-la. Se não é usado globalmente.