Чаще всего они возникают из-за того, что забыли включить заголовочный файл, содержащий объявление функции, например, эта программа выдаст ошибку «необъявленный идентификатор»:
Отсутствует заголовок
int main() {
std::cout << "Hello world!" << std::endl;
return 0;
}
Чтобы исправить это, мы должны включить заголовок:
#include <iostream>
int main() {
std::cout << "Hello world!" << std::endl;
return 0;
}
Если вы написали заголовок и включили его правильно, он может содержать неправильный include guard.
Чтобы узнать больше, см. http://msdn.microsoft.com/en-us/library/aa229215(v=vs.60).aspx.
Переменная с ошибкой
Другой распространенный источник ошибки новичков возникает, когда вы неправильно написали переменную:
int main() {
int aComplicatedName;
AComplicatedName = 1; /* mind the uppercase A */
return 0;
}
Неправильный объем
Например, этот код выдаст ошибку, потому что вам нужно использовать std::string
:
#include <string>
int main() {
std::string s1 = "Hello"; // Correct.
string s2 = "world"; // WRONG - would give error.
}
Использовать перед декларацией
void f() { g(); }
void g() { }
g
не был заявлен до его первого использования. Чтобы исправить это, переместите определение g
перед f
:
void g() { }
void f() { g(); }
Или добавьте объявление g
перед f
:
void g(); // declaration
void f() { g(); }
void g() { } // definition
stdafx.h не на вершине (специфично для VS)
Это специфично для Visual Studio. В VS вам нужно добавить #include "stdafx.h"
перед любым кодом. Код до того, как он игнорируется компилятором, поэтому, если у вас есть это:
#include <iostream>
#include "stdafx.h"
#include <iostream>
будет проигнорирован. Вам нужно переместить его ниже:
#include "stdafx.h"
#include <iostream>
Не стесняйтесь редактировать этот ответ.
person
Community
schedule
05.03.2014
<iostream>
и попытка использоватьstd::string
без включения<string>
. Возможно, стоит упомянуть. - person πάντα ῥεῖ   schedule 05.03.2014