Última actualización:2026-10-12
C++ Trígrafos¶
C++那些事: eliminación de los trígrafos¶
Antes de C++17, los trígrafos eran una funcionalidad para escribir programas con códigos de caracteres pequeños como ISO/IEC 646, introducida en C89. A ISO/IEC 646 le faltan los siguientes caracteres usados en C, por lo que hay que escaparlos con ??:
| Contenido del trígrafo | Carácter sustituido |
|---|---|
??= |
# |
??( |
[ |
??) |
] |
??< |
{ |
??> |
} |
??/ |
\ |
??! |
| |
??- |
~ |
??' |
^ |
\? se escapa para evitar que lo sustituya la tabla de trígrafos.
En C++17 los trígrafos se eliminaron, y ??= y similares ya no se sustituyen.
Ejemplos¶
Antes de C++17:
Salida:
En C++17 y posteriores:
Hoy en día, probablemente porque codificaciones de caracteres como Unicode ya están generalizadas, los trígrafos ya no son necesarios, y compiladores como gcc los desactivan por defecto.
Temas relacionados¶
- C++ Evitar el constructor por defecto | C++那些事
- C++ Idioma de la lista de inicialización de clases | C++那些事
- C++: plantillas de clase antes que plantillas de función | C++那些事
- C++ Idioma copy-and-swap | C++那些事
- C++ Inyección de dependencias | C++那些事
- C++ enum class enumeraciones fuertemente tipadas | C++那些事
- C++ Header-Only frente a separación de implementación | C++那些事
- C++ Idioma de evaluación perezosa | C++那些事
- C++ Idioma de la tabla de consulta | C++那些事
- C++ Punteros a miembros e información de tipos | C++那些事