Подробности - Compiler Error C2143

Это ошибка синтаксиса. Связана она с отсутствием необходимых разделителей между элементами языка. Компилятор ожидает, что некоторые элементы языка появятся прежде или после других элементов. Если этого не происходит, то он выдаем ошибку. Будем пробовать ее получить. Пишем код:

#include "stdafx.h"
int main(int argc, char* argv[])
{
	int x;
	int y;
	if (x<y) :	// двоеточие здесь совсем не нужно
	{
	}
}

Результат работы компилятора:

D:\VС\TestError\TestError.cpp(10) : error C2143: syntax error : missing ';' before ':'

Второй наиболее частый вариант это забыть поставить ";" после объявления класса.

#include "stdafx.h"

class CMy
{
}	// забыли ";"

class CMy2
{
}

int main(int argc, char* argv[])
{
}

Опять та же ошибка.

D:\VС\TestError\TestError.cpp(12) : error C2236: unexpected 'class' 'CMy2'
D:\VС\TestError\TestError.cpp(12) : error C2143: syntax error : missing ';' before '{'

Еще один вариант с лишней скобки:

#include "stdafx.h"

int main(int argc, char* argv[])
{
}		// это лишнее
return 0;
}

Опять та же ошибка:

D:\VС\TestError\TestError.cpp(11) : warning C4508: 'main' : function should return a value; 'void' return type assumed
D:\VС\TestError\TestError.cpp(12) : error C2143: syntax error : missing ';' before 'return'

Отсутствие закрывающей скобки может привести к такой же ошибке:

#include "stdafx.h"

int main(int argc, char* argv[])
{
	for (int x=0;x<10;x++		// не хватает ")"
	{
	}
	return 0;
}

Как видите это ошибка связанна с синтаксисом. Если она у Вас появляется внимательно просмотрите код на предмет соответствия требованиям C++ (лишние знаки, забытые ;)


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.