pasando enumeración en C
-
03-07-2019 - |
Pregunta
Esto puede parecer una pregunta simple, pero obtengo un error al compilar esto. Quiero poder pasar una enumeración a un método en C.
Enumeración
enum TYPES { PHOTON, NEUTRINO, QUARK, PROTON, ELECTRON };
Llamando al método
makeParticle(PHOTON, 0.3f, 0.09f, location, colour);
Método
struct Particle makeParticle(enum TYPES type, float radius, float speed, struct Vector3 location, struct Vector3 colour)
{
struct Particle p;
p.type = type;
p.radius = radius;
p.speed = speed;
p.location = location;
p.colour = colour;
return p;
}
El error que obtengo es cuando llamo al método:
tipos incompatibles en la asignación
Solución
Se compila bien para mí, en este ejemplo reducido:
enum TYPES { PHOTON, NEUTRINO, QUARK, PROTON, ELECTRON };
void makeParticle(enum TYPES type)
{
}
int main(void)
{
makeParticle(PHOTON);
}
¿Está seguro de haber hecho que la declaración de TYPES
esté disponible para el código tanto en la definición de makeParticle
como en la llamada? No funcionará si haces esto:
int main(void)
{
makeParticle(PHOTON);
}
enum TYPES { PHOTON, NEUTRINO, QUARK, PROTON, ELECTRON };
void makeParticle(enum TYPES type)
{
}
porque el código main ()
aún no ha visto TIPOS.
Otros consejos
Intenta cambiar
p.type = type;
a
p.type = (int)type;
Si esto no ayuda, agregue el archivo .c completo, incluida la definición de struct Particle
a su pregunta.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow