3

我在 Visual C++ 中遇到了一个错误,这让我很难过。

错误是错误 c2143 读取:语法错误:在 'constant' 之前缺少 ')'

我的代码行是:

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

我在文件的开头有#include,它应该定义 floor(double) 函数。

对变量的更多解释。

double depth 是可以在其中找到该行的类的成员变量。
int i 是递增的索引值。
double t 是一个递增值。

他们所做的其实并不重要,但我想澄清一下,这三个都已经定义为基本类型的变量。

我已经检查并验证了所有括号都匹配。对于编译器所指的“常量”,我有点不知所措。有任何想法吗?

4

6 回答 6

6

我不太确定这是否与编译器给您的错误相同,但是您必须在第二个 '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);
于 2009-04-06T07:13:39.447 回答
6

其他海报已经向您展示了语句中的实际错误,但请将其拆分为多个子语句,更清楚地显示您在数学上尝试做的事情,因为如果您不这样做,该函数将来会让您头疼不!

于 2009-04-06T07:21:08.320 回答
5
coefficient[i] = (1 - (2 * depth)) + ((t - floor( t + 0.5 ) + 1 ) (the problem is here) 2 * depth);
于 2009-04-06T07:12:31.120 回答
2

即使你有正确的答案,我也会解释你应该如何得出它。

当遇到无法找到的长表达式中的错误时,将表达式逐个拆开,直到找到为止。

在这种情况下:

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.
于 2009-06-11T21:59:48.790 回答
1

系数[i] = (1 - (2 * depth)) + ((t - floor( t + 0.5 ) + 1 ) 2(2 在这里做什么?) * depth);

于 2009-04-06T07:15:34.730 回答
1

声明枚举时我遇到了类似的错误。这是因为枚举常量之一也在代码的其他地方声明。

于 2011-10-28T06:39:13.790 回答