Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / C++ Новый топик    Ответить
 VS2010 не понимает такую конструкцию?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 2257
2017 компилирует, а 2010 пишет ошибку типа
error C2143: syntax error : missing ';' before 'type'

for(int i=1; i<=5; i++)
{
///
}


2010 реально не понимает такое?
6 дек 18, 09:32    [21755342]     Ответить | Цитировать Сообщить модератору
 Re: VS2010 не понимает такую конструкцию?  [new]
Dima T
Member

Откуда:
Сообщений: 12868
Понимает. for() всегда так писался. Скорее всего ошибка где-то рядом. Ищи пропущенную ;
6 дек 18, 09:45    [21755356]     Ответить | Цитировать Сообщить модератору
 Re: VS2010 не понимает такую конструкцию?  [new]
Dima T
Member

Откуда:
Сообщений: 12868
Возможно в коде есть что-то из С++11, это 2010 точно не поймет.
6 дек 18, 09:54    [21755373]     Ответить | Цитировать Сообщить модератору
 Re: VS2010 не понимает такую конструкцию?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 2257
Такая функция, проходит в 2017 и не проходит с ошибкой в 2010

 static int TryToParseInt(const char *str, int offset, int size)
 {
	int val2=0;
	char tmp[64] = { 0 };
	
	for (int Ix = 0; Ix < size; ++Ix) //<----------error
	{
	    tmp[Ix] = str[offset + Ix];
	}
	val2 = atoi(tmp);
	return val2;
 }
6 дек 18, 10:11    [21755411]     Ответить | Цитировать Сообщить модератору
 Re: VS2010 не понимает такую конструкцию?  [new]
Dima T
Member

Откуда:
Сообщений: 12868
Ролг Хупин
Такая функция, проходит в 2017 и не проходит с ошибкой в 2010

 static int TryToParseInt(const char *str, int offset, int size)
 {
	int val2=0;
	char tmp[64] = { 0 };
	
	for (int Ix = 0; Ix < size; ++Ix) //<----------error
	{
	    tmp[Ix] = str[offset + Ix];
	}
	val2 = atoi(tmp);
	return val2;
 }

2010 нет, попробовал в VC2008 - компилируется.
6 дек 18, 10:25    [21755436]     Ответить | Цитировать Сообщить модератору
 Re: VS2010 не понимает такую конструкцию?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 2257
Dima T
Ролг Хупин
Такая функция, проходит в 2017 и не проходит с ошибкой в 2010

 static int TryToParseInt(const char *str, int offset, int size)
 {
	int val2=0;
	char tmp[64] = { 0 };
	
	for (int Ix = 0; Ix < size; ++Ix) //<----------error
	{
	    tmp[Ix] = str[offset + Ix];
	}
	val2 = atoi(tmp);
	return val2;
 }

2010 нет, попробовал в VC2008 - компилируется.


В том-то и вопрос, у меня в 2010 сыпет ошибки, точнее при компиляции батником, а компилер от 2010 стоит

error C2143: syntax error : missing ';' before 'type'
error C2143: syntax error : missing ';' before 'type'
error C2143: syntax error : missing ')' before 'type'
error C2143: syntax error : missing ';' before 'type'
error C2065: 'Ix' : undeclared identifier
warning C4552: '<' : operator has no effect; expected operator with side-effect
error C2059: syntax error : ')'
error C2065: 'Ix' : undeclared identifier
error C2143: syntax error : missing ';' before '{'
6 дек 18, 10:35    [21755454]     Ответить | Цитировать Сообщить модератору
 Re: VS2010 не понимает такую конструкцию?  [new]
Dima T
Member

Откуда:
Сообщений: 12868
Код вполне себе обычный. Разве что это не всегда было
char tmp[64] = { 0 };

попробуй так написать
char tmp[64];
tmp[size] = 0;
6 дек 18, 10:40    [21755464]     Ответить | Цитировать Сообщить модератору
 Re: VS2010 не понимает такую конструкцию?  [new]
oleqie
Member

Откуда:
Сообщений: 3
С++ такое поймет, а вот С - не факт. У тебя, скорее всего, этот файл компилируется С-компилятором.
6 дек 18, 10:43    [21755470]     Ответить | Цитировать Сообщить модератору
 Re: VS2010 не понимает такую конструкцию?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 2257
oleqie
С++ такое поймет, а вот С - не факт. У тебя, скорее всего, этот файл компилируется С-компилятором.


да, это с код, не ++
6 дек 18, 10:49    [21755484]     Ответить | Цитировать Сообщить модератору
 Re: VS2010 не понимает такую конструкцию?  [new]
oleqie
Member

Откуда:
Сообщений: 3
Проверил с VS2005 - С++ это понимает, а С - нет (те же ошибки лезут что и у вас)
Какие стандарты компилятор поддерживает и где это можно выбрать - не вижу пока...
6 дек 18, 10:51    [21755486]     Ответить | Цитировать Сообщить модератору
 Re: VS2010 не понимает такую конструкцию?  [new]
oleqie
Member

Откуда:
Сообщений: 3
Ну тогда перенесите объявление Ix за пределы for, если использование С принципиально... Вроде, С99 должен такое поддерживать, а вот, выходит, что в МС не совсем С99, или это где-то выбрать можно.
6 дек 18, 10:53    [21755491]     Ответить | Цитировать Сообщить модератору
 Re: VS2010 не понимает такую конструкцию?  [new]
256k
Member

Откуда: с.Торчилово, Псковская обл.
Сообщений: 352
oleqie
Ну тогда перенесите объявление Ix за пределы for, если использование С принципиально... Вроде, С99 должен такое поддерживать, а вот, выходит, что в МС не совсем С99, или это где-то выбрать можно.


где-то видел, что вроде 2010 поддерживает стандарт с89, а не с99
6 дек 18, 11:23    [21755554]     Ответить | Цитировать Сообщить модератору
 Re: VS2010 не понимает такую конструкцию?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 2257
Dima T
Код вполне себе обычный. Разве что это не всегда было
char tmp[64] = { 0 };//<-----------весь массив?

попробуй так написать
char tmp[64];
tmp[size] = 0;


кстати, исправьте, если ошибаюсь, по-моему есть разница:
в первом случае пробивается 0 весь массив, в отличие от второго?
7 дек 18, 09:09    [21756628]     Ответить | Цитировать Сообщить модератору
 Re: VS2010 не понимает такую конструкцию?  [new]
Фэйтл Эра
Member

Откуда:
Сообщений: 198
Ролг Хупин,

да, конкретный элемент и все последующие за ним.
char tmp[64] = { 0, 1, 2, 3 };// =>
// tmp[0] = 0;
// tmp[1] = 1;
// tmp[2] = 2;
// tmp[3..63] = 3;
7 дек 18, 10:17    [21756705]     Ответить | Цитировать Сообщить модератору
 Re: VS2010 не понимает такую конструкцию?  [new]
ну я
Member

Откуда: Stalingrad
Сообщений: 1172
Dima T
Разве что это не всегда было
char tmp[64] = { 0 };

Я чисто из эрудиции спрошу - а когда и где это не всегда было?
7 дек 18, 11:23    [21756773]     Ответить | Цитировать Сообщить модератору
 Re: VS2010 не понимает такую конструкцию?  [new]
Dima T
Member

Откуда:
Сообщений: 12868
Ролг Хупин
Dima T
Код вполне себе обычный. Разве что это не всегда было
char tmp[64] = { 0 };//<-----------весь массив?

попробуй так написать
char tmp[64];
tmp[size] = 0;


кстати, исправьте, если ошибаюсь, по-моему есть разница:
в первом случае пробивается 0 весь массив, в отличие от второго?

Все верно, но в твоем случае без разницы, т.к. далее в цикле ты заполняешь все элементы до tmp[size].
7 дек 18, 11:24    [21756775]     Ответить | Цитировать Сообщить модератору
 Re: VS2010 не понимает такую конструкцию?  [new]
a.guest
Member

Откуда:
Сообщений: 1
ну я
Dima T
Разве что это не всегда было
char tmp[64] = { 0 };

Я чисто из эрудиции спрошу - а когда и где это не всегда было?
До нашей эры в Палестине, например, этого не было.
7 дек 18, 21:28    [21757625]     Ответить | Цитировать Сообщить модератору
Все форумы / C++ Ответить