2012-06-17 14 views

Respuesta

8

Un nombre de carácter universal se parece a \uFFFD o \U0010FFFD. Es un método de escribir un carácter en su código fuente donde la codificación del código fuente no incluye ese carácter.

C++ especifica que los caracteres que no están en el juego de caracteres básicos de origen se transformarán en nombres de caracteres universales en la primera fase de la traducción. La razón de esto es para que los nombres de caracteres universales y los caracteres que no están en el juego de caracteres de origen básico pero que están en el conjunto de caracteres de origen sean tratados de forma idéntica.

El como-si regla significa que una implementación no es realmente necesario para hacer esto traducción universal, el nombre del personaje, siempre y cuando se trata caracteres extendidos escritas como nombres de personajes universales de forma idéntica con caracteres extendidos que aparecen literalmente en la fuente.

+0

¿Son todos caracteres codificados en Unicode? Entonces, ¿los caracteres chinos se convierten, por ejemplo, en unicodefirst? – unj2

+0

Sí, los nombres de caracteres universales usan nombres cortos Unicode (el número Unicode se asocia con cada carácter). Por ejemplo, Unicode asigna el carácter '⻰' al nombre corto U + 2EF0 y, por lo tanto, el nombre del carácter universal para este carácter sería '\ u2EF0' o' \ U00002EF0' – bames53

+0

Así que escribí un programa para convertir un archivo fuente C++ en nada pero nombres de personajes universales. G ++ primero dio un montón de errores sobre el uso de caracteres universales en los identificadores, y luego terminó con 'error: '#include \ 012int main() {\ 012 \ 011printf (" ¡Hola, mundo! \ N "); \ 012 \ 011return 0; \ 012} \ 012 'no nombra un tipo' Entonces, o bien * hay * una diferencia entre los nombres de los personajes universales y los caracteres reales que representan, o hay un error en GNU C++. –