2010-07-03 13 views
6

Kompilacja ten kodZmienna nazwa "xor" powoduje wewnętrzny błąd kompilatora "błąd segmentacji"!

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

poprzez

g++ main.cpp 

wyniki w:

internal compiler error: Segmentation fault 

z

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

Zmiana nazwy zmiennej usuwa błąd.

Pytanie: Czy gcc pochodzi z Apple crap?

+1

widocznie jest. –

+1

Wygląda na kandydata do zgłoszenia błędu do zespołu gcc. – yfeldblum

+0

Dla mnie na 4.4.1-4ubuntu9, po prostu daje normalny błąd, "oczekiwano unqualified-id przed"^"tokena." (xor jest aliasem dla ^). Brak błędu segmentacji. –

Odpowiedz

3

każdym razem swoich naruszenia ochrony pamięci kompilatora, jest to błąd. Twój już zredukowany przypadek testowy jest idealnym kandydatem do zgłoszenia do GCC.

+1

Powinno zostać zgłoszone firmie Apple (http://developer.apple.com/bugreporter/). Mogą najlepiej określić, czy to błąd, który wprowadzili, czy też obecni w źródłach. Jeśli znajduje się w strumieniu upstream, zazwyczaj zgłasza tam błąd. –

+0

Dzięki za podpowiedź. Zgłosiłem to zarówno Apple, jak i zespołowi gcc. – WolfgangA

3

and_eq, bitand, BITOR, kpl, nie not_eq, albo or_eq, xor i xor_eq to słowa kluczowe, które są włączone do -ansi lub -foperator nazw

masz jeden z tych przełączników jest włączony?

sprawdzić również na zewnątrz: this

+0

Dzięki za wskazanie tej "ukrytej funkcji"! – WolfgangA

+1

@Wolfgang, to nie jest g ++ - specyficzne lub ukryte. Standard C++ mówi, że 'xor' jest zarezerwowany, a użycie słowa zarezerwowanego w innym kontekście jest niezdefiniowanym zachowaniem. Oznacza to, że wszystko może się zdarzyć. Oczywiście lepiej, aby kompilator wydrukował wyraźny komunikat o błędzie. –

+0

@ Mathew Miałem na myśli to jako żart. Używanie operatorów logicznych zapisanych w warunkach jest całkiem fajną cechą, która sprawia, że ​​kod jest bardziej czytelny (szczególnie dla współpracowników, którzy są przyzwyczajeni do języków skryptowych), ale wątpię, aby wielu programistów C++ o tym wiedziało lub używało. – WolfgangA

Powiązane problemy