Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Una nota para los programadores:
Ahora, si necesitamos editar una enumeración, la editamos una vez y en un solo lugar. Necesitamos añadir un nuevo elemento, por ejemplo elemento_nuevo = 56, añadimos
Y no nos molestamos en editar la función get_enumqq_array(). La técnica se llama X Macro https://en.wikipedia.org/wiki/X_Macro. Si los desarrolladores lo desean, pueden modificar fácilmente las enumeraciones estándar de forma similar.
Aunque no sea inmediatamente evidente, la enumeración resultó así:
¡Genial! No conocía el X Macro, ¡gracias! No entiendo el código, por qué no hay error por la coma al final de la definición ENUM_QQ_HELPER. No debe haber una coma después del último elemento cuando se define un enum o un array. Pero parece que el compilador no lo jura por alguna razón.
He intentado
no lo hará. Y el tamaño de la matriz (enum) es como debe ser. ¡Es genial! Parece que es un error, pero prefiero que sea así. Realmente, es conveniente.
Bueno, es una violación legítima, especialmente para todo tipo de "cosas" como esta, aparentemente. No te preocupes, tampoco es un error en C/C++.
SZZ: en la norma C++ sobre el tema de la inicialización:
braced-init-list:
{initializer-list , opt}
{ }
Es decir, la coma al final de braced-init-list está legalizada al más alto nivel.
Es decir, la coma al final de la lista braceada-init está legalizada al más alto nivel.
Una nota para los programadores:
¿Qué pasa con los nombres normales que están en los comentarios?
¿Qué pasa con los nombres normales que están en los comentarios?
¿Qué pasa con los nombres normales que están en los comentarios?
Sí, insertar un comentario no funciona. Sintaxis desafortunada para comentar los enums.
¿Puedo tener un ejemplo del enum en cuestión?
Sí, no funciona para insertar un comentario. Sintaxis desafortunada para comentar las enumeraciones.
Conclúyalo en /*...*/.
enum E {
a = 1, --**-- Комментарий_1
b = 2 --**-- Комментарий_2
};
La cuestión aquí es que el preprocesador no quiere comerse los comentarios (tanto // como /*), no espera verlos cuando se expanden las macros. O bien se cambian las reglas del preprocesador, o se introduce una forma alternativa de comentar las enumeraciones (el comentario se mostrará cuando se ejecute el script en la configuración), así:
enum E {
a = 1, --**-- Комментарий_1
b = 2 --**-- Комментарий_2
};
El preprocesamiento se realiza en varios pasos. Al principio, se eliminan todos los comentarios del código fuente y se envía el resultado para su procesamiento. Y aquí es donde el preprocesador no espera encontrar un comentario (cuando abre las macros). Considerará dicho encuentro como un error. Por ejemplo, aquí:
A primera vista, este código inofensivo debería contener un comentario. Pero no se compila.