1

这似乎是一个简单的问题,但编译时出现错误。我希望能够将枚举传递给 C 中的方法。

枚举

enum TYPES { PHOTON, NEUTRINO, QUARK, PROTON, ELECTRON };

调用方法

makeParticle(PHOTON, 0.3f, 0.09f, location, colour);

方法

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;
}

我得到的错误是当我调用该方法时:

赋值中的不兼容类型

4

2 回答 2

5

在这个精简的示例中,它对我来说编译得很好:

enum TYPES { PHOTON, NEUTRINO, QUARK, PROTON, ELECTRON };

void makeParticle(enum TYPES type)
{
}

int main(void)
{
    makeParticle(PHOTON);
}

你确定你已经TYPES在定义makeParticle和调用中声明了代码可用吗?如果您这样做,它将不起作用:

int main(void)
{
    makeParticle(PHOTON);
}

enum TYPES { PHOTON, NEUTRINO, QUARK, PROTON, ELECTRON };

void makeParticle(enum TYPES type)
{
}

因为main()代码还没有看到 TYPES。

于 2009-04-30T22:20:48.993 回答
-2

尝试改变

p.type = type;

p.type = (int)type;

如果这没有帮助,请添加整个 .c 文件,包括struct Particle问题的定义。

于 2009-04-30T22:22:13.000 回答