Question

I'm getting an error in Visual C++ that is giving me a really hard time.

The error is error c2143 reading: syntax error: missing ')' before 'constant'

My code line is:

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

I have #include at the beginning of the file which should define the floor(double) function.

a bit more explanation of the variables.

double depth is a member variable of the class which this line can be found in.
int i is an incrementing index value.
double t is an incrementing value.

What they do is really unimportant, but I wanted to clarify that all three are already defined as variables of basic types.

I've gone through and verified that all the parentheses match up. I'm kind of at a loss as to what 'constant' the compiler is referring to. Any ideas?

Was it helpful?

Solution

I'm not quite sure if this is the same error that the compiler is giving you, but you have to put a '*' sign in front of the second '2' so that this:

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

Becomes this:

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

OTHER TIPS

Other posters have shown you the actual error in the statement, but please, split that up into multiple sub-statements that more clearly show what you are trying to do mathematically, because that function is going to cause you headaches in the future if you don't!

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

Even though you have the right answer, I'm going to explain how you should have arrived at it.

When faced with an error in a long expression that you can't find, take the expression apart, piece by piece, until you find it.

In this case:

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

becomes:

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

This eliminates the first part as the source of the error.

Next attempt:

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

Final attempt:

exprA = (( MY_TEST_CONSTANT ) 2 * depth);   // Error now becomes obvious.

coefficient[i] = (1 - (2 * depth)) + ((t - floor( t + 0.5 ) + 1 ) 2(What is 2 doing here?) * depth);

I faced a similar error when declaring an enum. It was because one of the enum constants was also declared elsewhere in the code.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top