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

Foi útil?

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
scroll top