Visual C ++ ошибка C2143: синтаксическая ошибка: отсутствует «)» до «константы» - PullRequest
3 голосов
/ 06 апреля 2009

Я получаю сообщение об ошибке в Visual C ++, из-за которого мне действительно тяжело.

Ошибка: ошибка c2143: синтаксическая ошибка: отсутствует ')' перед "константой"

Моя строка кода:

coefficient[i] = (1 - (2 * depth)) + ((t - floor( t + 0.5 ) + 1 ) 2 * depth); 

У меня #include в начале файла, который должен определять функцию floor (double).

чуть больше объяснения переменных.

двойная глубина - переменная-член класса, в котором находится эта строка.
int i - это увеличивающееся значение индекса.
double t является возрастающим значением.

То, что они делают, действительно неважно, но я хотел уточнить, что все три уже определены как переменные базовых типов.

Я прошел и проверил, что все скобки совпадают. Я как бы в растерянности относительно того, на какую «константу» ссылается компилятор. Есть идеи?

Ответы [ 6 ]

6 голосов
/ 06 апреля 2009

Другие авторы показали вам фактическую ошибку в утверждении, но, пожалуйста, разбейте ее на несколько подвыражений, которые более четко показывают, что вы пытаетесь сделать математически, потому что эта функция вызовет у вас головную боль в будущем если нет!

6 голосов
/ 06 апреля 2009

Я не совсем уверен, если это та же ошибка, что дает вам компилятор, но вы должны поставить знак '*' перед вторым '2', чтобы это:

coefficient[i] = (1 - (2 * depth)) + ((t - floor( t + 0.5 ) + 1 ) 2 * depth);

Становится так:

coefficient[i] = (1 - (2 * depth)) + ((t - floor( t + 0.5 ) + 1 ) * 2 * depth);
5 голосов
/ 06 апреля 2009
coefficient[i] = (1 - (2 * depth)) + ((t - floor( t + 0.5 ) + 1 ) (the problem is here) 2 * depth);
2 голосов
/ 12 июня 2009

Даже если у вас есть правильный ответ, я собираюсь объяснить, как вы должны были прийти к нему.

Если вы столкнулись с ошибкой в ​​длинном выражении, которую не можете найти, разберите выражение на части, пока не найдете его.

В этом случае:

coefficient[i] = (1 - (2 * depth)) + ((t - floor( t + 0.5 ) + 1 ) 2 * depth);

становится:

firsthalf = (1 - (2 * depth));
secondhalf = ((t - floor( t + 0.5 ) + 1 ) 2 * depth);   // Error appears on this line
coefficient[i] = firsthalf + secondhalf;

Это исключает первую часть как источник ошибки.

Следующая попытка:

exprA = (t - floor( t + 0.5 ) + 1 );
exprB = exprA * 2;
exprC = exprB * depth;   // Hmm.... this all worked.  Start putting it back together.
secondhalf = exprC;

Последняя попытка:

exprA = (( MY_TEST_CONSTANT ) 2 * depth);   // Error now becomes obvious.
1 голос
/ 28 октября 2011

Я столкнулся с подобной ошибкой при объявлении перечисления. Это произошло потому, что одна из констант enum была также объявлена ​​в другом месте кода.

1 голос
/ 06 апреля 2009

коэффициент [i] = (1 - (2 * глубина)) + ((t - пол (t + 0,5) + 1) 2 (что здесь делает 2?) * глубина);

...