passando enum em C
-
03-07-2019 - |
Pergunta
Isto pode parecer uma pergunta simples, mas eu estou recebendo um erro ao compilar isso. Eu quero ser capaz de passar um enum em um método em C.
Enum
enum TYPES { PHOTON, NEUTRINO, QUARK, PROTON, ELECTRON };
Chamar o 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;
}
O erro que eu estou recebendo é quando eu estou chamando o método:
tipos incompatíveis na atribuição
Solução
Ele compila bem para mim, neste exemplo cut-down:
enum TYPES { PHOTON, NEUTRINO, QUARK, PROTON, ELECTRON };
void makeParticle(enum TYPES type)
{
}
int main(void)
{
makeParticle(PHOTON);
}
Você tem certeza que você tenha feito a declaração de TYPES
disponível para o código, tanto na definição de makeParticle
ea chamada para ele? Ele não vai funcionar se você fizer isso:
int main(void)
{
makeParticle(PHOTON);
}
enum TYPES { PHOTON, NEUTRINO, QUARK, PROTON, ELECTRON };
void makeParticle(enum TYPES type)
{
}
porque o código main()
não viu TIPOS ainda.
Outras dicas
Tente alterar
p.type = type;
para
p.type = (int)type;
Se isto não ajuda, por favor, adicione todo o arquivo .c, incluindo a definição de struct Particle
à sua pergunta.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow