manejo - listas en racket
¿Cómo advertir al asignar o realizar aritmética con diferentes tipos de enumeración en GCC? (1)
Según esta respuesta , solo clang apoya el comportamiento deseado.
Hay algunos enfoques para emular enums fuertemente tipados en C, pero parecen tener varias limitaciones.
Si bien soy consciente de esto, C es válido para no diferenciar entre los tipos enum.
GCC tiene -Wenum-compare
(que estoy usando) y funciona como se esperaba.
Intenté usar -Wconversion
pero esto no hace ninguna diferencia.
¿Cómo pueden las asignaciones y los operadores aritméticos ( +
/ -
/ &
/ |
... etc) también generar advertencias? (asignación, oy ... etc.)
{
enum Foo f = SOME_VALUE;
enum Bar b = SOME_OTHER_VALUE;
if (f != b) {
/* this warns! */
}
f = b; /* <-- how to warn about this? */
f |= b; /* .. and this? */
}
Notas:
- Cambiar a C ++ no es una opción (como se sugiere en otras respuestas) .
- Esta pregunta está estrechamente relacionada, sin embargo no es un duplicado porque se trata de pasar argumentos en lugar de aritmética.