передача перечисления в C
-
03-07-2019 - |
Вопрос
Это может показаться простым вопросом, но при его компиляции я получаю сообщение об ошибке.Я хочу иметь возможность передавать перечисление в метод 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;
}
Ошибка, которую я получаю, возникает при вызове метода:
несовместимые типы в присваивании
Решение
У меня он компилируется нормально, в этом урезанном примере:
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()
код еще не видел ТИПЫ.
Другие советы
Попробуйте изменить
p.type = type;
к
p.type = (int)type;
Если это не поможет, добавьте весь файл .c, включая определение struct Particle
на ваш вопрос.
Не связан с StackOverflow