2009-04-06 6 views
3

Ich bekomme einen Fehler in Visual C++, die mir eine wirklich harte Zeit gibt.Visual C++ - Fehler C2143: Syntaxfehler: fehlende ')' vor 'Konstante'

Der Fehler ist Fehler C2143 Lesen: Syntaxfehler: fehlen ‚)‘ vor ‚constant‘

Meine Code-Zeile ist:

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

ich am Anfang der Datei # include haben, die sollten Definieren Sie die Boden (Doppel) -Funktion.

ein bisschen mehr Erklärung der Variablen.

double depth ist eine Membervariable der Klasse, in der sich diese Zeile befindet.
int i ist ein inkrementierender Indexwert.
double t ist ein inkrementierender Wert.

Was sie tun ist wirklich unwichtig, aber ich wollte klarstellen, dass alle drei bereits als Variablen der Grundtypen definiert sind.

Ich habe durchgegangen und überprüft, dass alle Klammern zusammenpassen. Ich weiß nicht genau, auf was "konstant" der Compiler sich bezieht. Irgendwelche Ideen?

Antwort

6

Ich bin nicht ganz sicher, ob dies der gleiche Fehler ist, dass der Compiler, dir gibt, aber Sie haben ein ‚*‘ Zeichen vor dem zweiten ‚2‘ zu setzen, damit diese:

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

dies zu:

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

Ah, dumme mich. Es kann schwierig sein, einfache Fehler ohne ein zweites Augenpaar zu sehen. Vielen Dank. – Rich

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

Koeffizient [i] = (1 - (2 * Tiefe)) + ((t - Boden (t + 0,5) + 1) 2 (Was ist 2 tun hier?) * Tiefe);

6

Andere Poster haben Ihnen den tatsächlichen Fehler in der Anweisung gezeigt, aber bitte teilen Sie das in mehrere Unteranweisungen auf, die klarer zeigen, was Sie mathematisch zu tun versuchen, weil diese Funktion Ihnen Kopfschmerzen bereiten wird Zukunft, wenn du es nicht tust!

+0

alternativ könnten sie nur den Ausdruck vereinfachen, vorausgesetzt, der fehlende Operator soll ein Zwei sein, dann ist das ein guter Anfang. 1 + (t - Boden (t + 0,5)) * 2 * Tiefe –

+0

Das (t-Boden (t + 0.5)) sieht wie ein Unterausdruck aus, der eine Erklärung für mich benötigt. –

2

Obwohl Sie die richtige Antwort haben, werde ich erklären, wie Sie es erreicht haben sollten.

Wenn Sie mit einem langen Ausdruck konfrontiert werden, den Sie nicht finden können, nehmen Sie den Ausdruck Stück für Stück auseinander, bis Sie ihn gefunden haben.

In diesem Fall:

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

wird:

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

Dies ist der erste Teil als Quelle des Fehlers beseitigt.

Nächster Versuch:

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

letzter Versuch:

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

ich einen ähnlichen Fehler konfrontiert, wenn eine Enumeration zu erklären. Das liegt daran, dass eine der Enum-Konstanten auch an anderer Stelle im Code deklariert wurde.