首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用枚举作为参数的奇怪编译行为

使用枚举作为参数的奇怪编译行为
EN

Stack Overflow用户
提问于 2015-02-23 12:14:59
回答 1查看 555关注 0票数 0

我正在尝试用XC8编译器v1.20用MPLAB-X编译这(部分)代码:

代码语言:javascript
复制
typedef enum i2cMode {MASTER = 0,SLAVE=1,OFF=2} i2c_mode;
void i2c_init(i2c_mode mode, uint8_t bus);

并且它位于头文件的内部。我尝试了每种组合,也没有数字关联,但最后它将始终输出以下内容:

代码语言:javascript
复制
(908) exit status = 1
make[2]: *** [build/pierin/production/main.p1] Error 1
../emu.X/i2c.h:48: error: label identifier expected
make[1]: *** [.build-conf] Error 2
../emu.X/i2c.h:48: error: "}" expected
make: *** [.build-impl] Error 2
../emu.X/i2c.h:48: error: no identifier in declaration
../emu.X/i2c.h:48: error: ";" expected
../emu.X/i2c.h:48: warning: missing basic type; int assumed
../emu.X/i2c.h:51: error: "," expected
../emu.X/i2c.h:51: error: can't mix prototyped and non-prototyped arguments
../emu.X/i2c.h:51: error: function body expected
main.c:41: error: undefined identifier "SLAVE"
main.c:41: error: too many function arguments

其中48是枚举类型定义,51是函数原型。在main中,我可以看到这不会创建从属枚举,也不会创建原型。我需要使用正态变量吗?它应该可以工作,但事实并非如此。我想使用i2c_mode类型和枚举。这里是错误的还是没有必要的?

EN

回答 1

Stack Overflow用户

发布于 2015-02-24 01:43:58

我解决了。这是一个自动读取链接外围库的问题,它正在读取默认的i2c.h头文件,造成了冲突。更改枚举名称已经解决了问题。谢谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28666820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档