entre - string literal c++
¿Diferencia entre los literales binarios de GCC y los de C++ 14? (3)
C ++ 14 parece estar llegando y los compiladores ya están intentando implementar las características principales de esta nueva revisión. Le eché un vistazo al soporte de GCC para estas funciones principales y noté algo sobre la parte de literales binarios: GCC los implementa pero parece hacer una diferencia entre los literales binarios de GNU y los literales binarios de C ++ 14 Aquí están las referencias respectivas para ambos:
Traté de encontrar algunas diferencias entre los dos ya que GCC parece hacer la diferencia, pero no pude encontrar nada. ¿Alguno de ustedes sabe más sobre posibles incompatibilidades?
Desde el diff de commit que introdujo el soporte en gcc 4.9, la única diferencia es que gcc ahora acepta literales binarios como una característica de lenguaje de C ++ 1y, y no advierte que son una extensión de gcc si el soporte de C ++ 1y es especificado. No hay ningún cambio en la implementación real.
Previamente:
warning : binary constants are a GCC extension
Ahora, a menos que se especifique -std=c++1y
:
warning : binary constants are a C..1y feature or GCC extension
El primer documento al que apunta es la implementación de GNU de literales binarios como una extensión del lenguaje C (es decir, es una característica no estándar de C y ese documento define cómo gcc implementa una extensión del lenguaje).
El segundo documento al que apunta es una propuesta para agregar literales binarios al lenguaje C ++ 11, pero que yo sepa tampoco ha sido aceptado (*) y eso significa que tampoco es parte del estándar C ++, sigue siendo una extensión de lenguaje proporcionada por gcc.
Por lo que veo, esta característica no sería portátil en todos los compiladores, pero podría definir su propia implementación de literal binario en C ++ 11 mediante el uso de literales definidos por el usuario.
(*) s / no aceptado / No puedo encontrar ninguna referencia a literales binarios en N3485 "Borrador de Trabajo, Estándar para Lenguaje de Programación C ++", pero podría ser una característica aceptada para el siguiente estándar de C ++.
Supongo que la diferencia es que una es una extensión, por lo que la gente no estaría demasiado inclinada a usarla, mientras que la otra cumple con las normas y es accesible sin activar las extensiones. Es una formalidad.