2010-07-03 24 views
6

Bu kodun derlenmesi'Xor' değişken ismi, dahili derleyici hatası 'segmentasyon hatası' ile sonuçlanır!

int main(int argc, char **argv) 
{ 
    int xor = 0; 
} 
g++ main.cpp 

sonuçlanır:

internal compiler error: Segmentation fault 

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

Değişkenin yeniden adlandırılması, hatayı kaldırır.

Soru: Apple crap'ten gcc mi?

+1

açıktır ki. –

+1

gcc ekibine bir hata raporu için aday gibi görünüyor. – yfeldblum

+0

Benim için 4.4.1-4ubuntu9'da, "’^"belirtecinden önce beklenmedik bir şekilde beklenen" normal bir hata veriyor. " (xor,^için bir takma addır). Segmentasyon hatası yok. –

cevap

3

Her zaman sizin derleyici çalışma sırasında parçalama arızası, bir böcek. Zaten azaltılmış test vakası, GCC'a bildirilmek üzere mükemmel bir adaydır.

+1

Apple'a bildirilmelidir (http://developer.apple.com/bugreporter/). En iyi, tanıttıkları bir böcek olup olmadığını veya üst akışta bulunup bulunmadığını belirleyebilirler. Akış yukarı ise, genellikle orada bir hata oluştururlar. –

+0

İpucunuz için teşekkürler. Apple’a ve gcc ekibine rapor ettim. – WolfgangA

3

and_eq, bitand, bitor, compl değil, not_eq veya or_eq, xor ve xor_eq nelerdir? Ayrıca dışarı

kontrol: this

+0

Bu 'gizli özellik' işaretlediğiniz için teşekkürler! – WolfgangA

+1

@Wolfgang, bu gerçekten g ++ - özgü veya gizli değil. C++ standardı, xor'un ayrıldığını ve başka bir bağlamda ayrılmış bir sözcüğün kullanılmasının tanımlanmamış bir davranış olduğunu belirtir. Bu, her şeyin gerçekleşebileceği anlamına gelir. Elbette, derleyicinin açık bir hata mesajı yazdırması tercih edilir. –

+0

@Matthew Bunu bir şaka olarak kastettim. Koşullarda dile getirilen mantıksal operatörleri kullanmak, kodu daha okunaklı kılan oldukça güzel bir özelliktir (özellikle dilleri betimlemek için kullanılan meslektaşlara), fakat birçok C++ programcısının bunu bildiğinden veya kullanmasından şüphe duyuyorum. – WolfgangA