2009-04-06 6 views
3

Je reçois une erreur dans Visual C++ qui me fait vraiment mal.Erreur Visual C++ C2143: erreur de syntaxe: manquant ')' avant 'constante'

L'erreur est une erreur C2143 lecture: erreur de syntaxe: manquant «) » avant « constante »

Ma ligne de code est:

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

Je #inclure au début du fichier qui devrait définir la fonction plancher (double).

un peu plus d'explications sur les variables. Double profondeur est une variable membre de la classe dans laquelle cette ligne peut être trouvée.
int i est une valeur d'index incrémentée.
double t est une valeur d'incrémentation. Ce qu'ils font est vraiment sans importance, mais je voulais préciser que tous les trois sont déjà définis comme des variables de types de base.

J'ai vérifié et vérifié que toutes les parenthèses correspondent. Je ne sais pas exactement à quelle «constante» le compilateur se réfère. Des idées?

Répondre

6

Je ne suis pas tout à fait sûr que ce soit la même erreur que le compilateur vous donne, mais vous devez mettre un « * » signe devant la seconde « 2 » de telle sorte que celle-ci:

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

Devient ceci:

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

Ah, idiot moi. Peut être difficile de voir des erreurs simples sans une seconde paire d'yeux. Merci. – Rich

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

coefficient [i] = (1 - (2 profondeur *)) + ((t - plancher (t + 0,5) + 1) 2 (ce qui est 2 fait ici?) * profondeur);

6

D'autres affiches vous ont montré l'erreur réelle dans la déclaration, mais s'il vous plaît, diviser cela en plusieurs sous-déclarations qui montrent plus clairement ce que vous essayez de faire mathématiquement, parce que cette fonction va vous causer des maux de tête dans la avenir si vous ne le faites pas!

+0

sinon ils pourraient simplement simplifier l'expression, en supposant que l'opérateur manquant est censé être un deux alors c'est un bon début .. 1 + (t - plancher (t + 0.5)) * 2 * profondeur –

+0

That (t-plancher (t + 0.5)) ressemble à une sous-expression qui a besoin d'explications. –

2

Même si vous avez la bonne réponse, je vais vous expliquer comment vous auriez dû y arriver.

Lorsque vous rencontrez une erreur dans une expression longue que vous ne trouvez pas, prenez l'expression à part, morceau par morceau, jusqu'à ce que vous la trouviez.

Dans ce cas:

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

devient:

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

Cela permet d'éliminer la première partie comme source de l'erreur.

tentative suivante:

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

tentative finale:

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

Je fait face à une erreur similaire lors de la déclaration d'un ENUM. C'était parce que l'une des constantes enum était aussi déclarée ailleurs dans le code.