2010-07-03 10 views
6

Compilar este códigoEl nombre de la variable 'xor' da como resultado un error del compilador interno 'fallo de segmentación'!

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

través

g++ main.cpp 

resultados en:

internal compiler error: Segmentation fault 

con

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

Cambio del nombre de la variable elimina el error.

Pregunta: ¿Es gcc de Apple crap?

+1

Evidentemente lo es. –

+1

Parece un candidato para un informe de error para el equipo de gcc. – yfeldblum

+0

Para mí en 4.4.1-4ubuntu9, simplemente da un error normal, "id esperado no calificado antes de '^' token". (xor es un alias para ^). Sin falla de segmentación –

Respuesta

3

Cada vez que su segfaults compilador, es un error. Su caso de prueba ya reducido es un candidato perfecto para informar al GCC.

+1

Se debe informar a Apple (http://developer.apple.com/bugreporter/). Ellos pueden determinar mejor si se trata de un error que introdujeron o que están presentes en la fase inicial. Si está en el flujo ascendente, típicamente archivarán un error allí. –

+0

Gracias por su pista. Lo informé a Apple y al equipo de gcc. – WolfgangA

3

and_eq, BITAND, bitor, compl, no, not_eq, o, or_eq, XOR y xor_eq son palabras clave que se habilitan con -ansi o -foperator nombres

que haya uno de esos conmutadores habilitados?

comprobación también a cabo: this

+0

¡Gracias por señalar esta 'función oculta'! – WolfgangA

+1

@Wolfgang, en realidad no es específico de g ++ ni está oculto. El estándar de C++ dice que 'xor' está reservado, y usar una palabra reservada en otro contexto es un comportamiento indefinido. Eso significa que cualquier cosa puede pasar. Por supuesto, es preferible que el compilador imprima un mensaje de error claro. –

+0

@Matthew lo quise decir como una broma. Usar operadores lógicos explicados en condiciones es una característica bastante buena que hace que el código sea más legible (especialmente para los colegas que están acostumbrados a los lenguajes de scripting), pero dudo que muchos programadores de C++ lo sepan o lo usen. – WolfgangA

Cuestiones relacionadas