C 在头文件中调用枚举时遇到错误
我在头文件中创建了以下函数(getHobby(嗜好)),当我在头文件中调用此函数时,出现了一个错误:C 在头文件中调用枚举时遇到错误,c,C,我在头文件中创建了以下函数(getHobby(嗜好)),当我在头文件中调用此函数时,出现了一个错误: conflicting types for 'getHobby' HobbiesTest.h enum Hobbies { SKATING, SPORTS }; char *getHobby(enum Hobbies hobbie) { <-- Compilation error "conflicing types for
conflicting types for 'getHobby'
HobbiesTest.h
enum Hobbies {
SKATING, SPORTS
};
char *getHobby(enum Hobbies hobbie) { <-- Compilation error "conflicing types for
'getHobby'
switch (hobbie) {
case SKATING:
return "SKATING";
case SPORTS:
return "SPORTS";
}
return "INVALIDOPTION";
}
void enumTest(){
printf("\nYour hobby is: %s",getHobby(SKATING));
}
enum{
滑冰、运动
};
char*getHobby(枚举hobbie嗜好){Put
在头文件的开头。您可以在定义此枚举之前使用它。谢谢您的回复。实际上,枚举兴趣爱好已经声明在头文件的顶部。很抱歉在这里结尾处编写它。我只是复制粘贴方法,而不是粘贴整段代码。很抱歉。然后编辑您的问题,我们将继续我的答案可能还不成熟,但我不能忽略它…另外void enumTest()函数定义了两次,一次在header中,一次在main中。cI在两种情况下测试了此代码:1.使用头文件2.从主文件。当我创建函数enumTest()时在Main.c文件中,我将其从头文件中删除,当我将其创建到头文件中时,我直接将其调用到Main.c.Ok中,假设您只有在头文件中使用void enumTest(),则使用case SPORTS而不是SPORTING…但这可能是所有其他内容对我来说都是好的…是的,它是SPORT,甚至是getHobby方法头文件中的(…)可以编译。但是,当我编写语句printf时(“\n您的爱好是:%s”,getHobby(滑冰));然后我得到了一个编译错误。我无法理解为什么它在头文件的情况下不起作用,并且相同的方法移到main,这会给我正确的结果。我创建了一个示例函数char*getValue(){return“Value”;}
我从一个方法执行语句(在头文件中)char*ch=getValue();
该方法也不起作用。
include <HobbiesTest.h>
int main(void) {
enumTest();
return 0;
}
void enumTest(){
printf("\nYour hobby is: %s",getHobby(SKATING));
}
enum Hobbies {
SKATING, SPORTING
};