2010-07-03 3 views
6

diesen Code compilierenVariablenname 'xor' führt zum internen Compilerfehler 'segmentation fault'!

int main(int argc, char **argv) 
{ 
    int xor = 0; 
} 

über

g++ main.cpp 

ergibt:

internal compiler error: Segmentation fault 

mit

i686-apple-darwin10-g++-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5659). 

die Variable Umbenennen entfernt den Fehler.

Frage: Ist gcc von Apple Mist?

+1

offensichtlich ist es. –

+1

Scheint wie ein Kandidat für einen Fehlerbericht an das GCC-Team. – yfeldblum

+0

Für mich auf 4.4.1-4ubuntu9 gibt es nur einen normalen Fehler, "erwartete unqualifizierte ID vor '^' Token." (xor ist ein Alias ​​für ^). Kein Segmentierungsfehler. –

Antwort

3

Jedes Mal, Compiler segfaults, es ist ein Fehler. Ihr bereits reduzierter Testfall ist ein perfekter Kandidat, der an GCC gemeldet werden kann.

+1

Es sollte an Apple gemeldet werden (http://developer.apple.com/bugreporter/). Sie können am besten feststellen, ob es sich um einen Bug handelt, den sie eingeführt haben oder der sich im Upstream befindet. Wenn es in Upstream ist, werden sie dort in der Regel einen Fehler ablegen. –

+0

Danke für Ihren Hinweis. Ich habe es sowohl Apple als auch dem gcc-Team gemeldet. – WolfgangA

3

and_eq, bitand, BITOR, kompl, nicht, not_eq, oder, or_eq, xor und xor_eq sind Schlüsselwörter, die mit -ansi oder -foperator-Namen aktiviert sind

Sie haben einen dieser Schalter aktiviert?

auch zu prüfen out: this

+0

Vielen Dank, dass Sie auf dieses "versteckte Feature" hingewiesen haben! – WolfgangA

+1

@Wolfgang, es ist nicht wirklich g ++ - spezifisch oder versteckt. Der C++ - Standard besagt, dass "xor" reserviert ist und ein reserviertes Wort in einem anderen Kontext ein nicht definiertes Verhalten ist. Das bedeutet, dass alles passieren kann. Natürlich ist es für den Compiler vorzuziehen, eine klare Fehlermeldung zu drucken. –

+0

@Matthew Ich meinte es als Witz. Logische Operatoren, die in Bedingungen geschrieben sind, zu verwenden, ist eine nette Eigenschaft, die Code lesbarer macht (insbesondere für Kollegen, die an Skriptsprachen gewöhnt sind), aber ich bezweifle, dass viele C++ - Programmierer davon wissen oder sie benutzen. – WolfgangA