C语言中,enum类型作函数参数的时候编译不过,请高人指点

hdp0717 2010-06-03 06:54:10
程序如下:
enum _MIKEY_
{
Valid=0,
Pass,
Fail
}MIKEY
然后定义一个函数
INT32 DecoderH264(MIKEY key_type,INT32 key_content,INT8 key_value);
在编译的时候出错,提示出错的位置是在函数定义的地方关于MIKEY的参数有问题,请高人指点怎么进行修改。
...全文
2284 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
happytang 2010-06-04
  • 打赏
  • 举报
回复
typedef enum _MIKEY_
{
Valid=0,
Pass,
Fail
}MIKEY;
这样定义类型,通过MIKEY来标识变量肯定可以

除非你的编译器不支持,基本不可能
不支持就参数改成int,实际上枚举类型大小也是int。
cao_julians 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 geniuscaobo 的回复:]
改成 MIKEY是enum类型
typedef enum _MIKEY_
{
Valid=0,
Pass,
Fail
}MIKEY;

下面这种定义一个变量MIKEY。
enum _MIKEY_
{
Valid=0,
Pass,
Fail
}MIKEY;
[/Quote]
LZ到现在也没有弄清枚举类型和枚举变量的表示方法。
yunyun1886358 2010-06-03
  • 打赏
  • 举报
回复
改成这样

enum _MIKEY_
{
Valid=0,
Pass,
Fail
}MIKEY
INT32 DecoderH264(_MIKEY_ key_type,INT32 key_content,INT8 key_value);
arong1234 2010-06-03
  • 打赏
  • 举报
回复
你不停说不行,到底怎么不行,遇到问题是什么,你期望的是什么,这些都不说,别人只能猜测你遇到啥问题了[Quote=引用 14 楼 hdp0717 的回复:]
还是不行啊,我用的编译器是ADS 1.2.可能是由于编译器不支持吧。。。。。。。。
[/Quote]
icansaymyabc 2010-06-03
  • 打赏
  • 举报
回复
下面这个程序完整且正确通过编译。你参照着反省一下自己错在哪里。


#define INT32 __int32
#define INT8 __int8

enum _MIKEY_
{
Valid=0,
Pass,
Fail
}MIKEY;

INT32 DecoderH264(_MIKEY_ key_type,INT32 key_content,INT8 key_value)
{
return 258;
}

int _tmain(int argc, _TCHAR* argv[])
{

DecoderH264( Pass, 0,0);
return 0;
}



Tiger-1985 2010-06-03
  • 打赏
  • 举报
回复
定义成一个变量了 不是一个类型
hdp0717 2010-06-03
  • 打赏
  • 举报
回复
还是不行啊,我用的编译器是ADS 1.2.可能是由于编译器不支持吧。。。。。。。。
dadun 2010-06-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hdp0717 的回复:]
我已经实验了
typedef enum _MIKEY_
{
Valid=0,
Pass,
Fail
}MIKEY;
调用
INT32 DecoderH264(_MIKEY_ key_type,INT32 key_content,INT8 key_value);

还是不行啊。。。。。。。。。。
[/Quote]

INT32 DecoderH264(_MIKEY_ key_type,INT32 key_content,INT8 key_value);

你的括号不对,是汉字输入法打出来的括号,你改改再看看行不行。
hdp0717 2010-06-03
  • 打赏
  • 举报
回复
那大家想想有没有比较合适于我这种思路的写法,多谢~~
geniuscaobo 2010-06-03
  • 打赏
  • 举报
回复
我的vc6通过。

那改成下面这样吧
typedef enum _MIKEY_
{
Valid=0,
Pass,
Fail
}MIKEY;
INT32 DecoderH264(MIKEY key_type,INT32 key_content,INT8 key_value);
pengzhixi 2010-06-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hdp0717 的回复:]
我已经实验了
typedef enum _MIKEY_
{
Valid=0,
Pass,
Fail
}MIKEY;
调用
INT32 DecoderH264(_MIKEY_ key_type,INT32 key_content,INT8 key_value);

还是不行啊。。。。。。。。。。
[/Quote]

如果你认为枚举也像其他类型那样使用的话,那就错了
hdp0717 2010-06-03
  • 打赏
  • 举报
回复
我已经实验了
typedef enum _MIKEY_
{
Valid=0,
Pass,
Fail
}MIKEY;
调用
INT32 DecoderH264(_MIKEY_ key_type,INT32 key_content,INT8 key_value);

还是不行啊。。。。。。。。。。
liutengfeigo 2010-06-03
  • 打赏
  • 举报
回复
C++中不可以做形参
pengzhixi 2010-06-03
  • 打赏
  • 举报
回复
那就没可能了。
dadun 2010-06-03
  • 打赏
  • 举报
回复
INT32 DecoderH264(_MIKEY_ key_type,INT32 key_content,INT8 key_value);
lxdfigo 2010-06-03
  • 打赏
  • 举报
回复
MIKEY 是个enum _MIKEY_对象,不是类型
lxdfigo 2010-06-03
  • 打赏
  • 举报
回复
改成 enum _MIKEY_
geniuscaobo 2010-06-03
  • 打赏
  • 举报
回复
改成 MIKEY是enum类型
typedef enum _MIKEY_
{
Valid=0,
Pass,
Fail
}MIKEY;

下面这种定义一个变量MIKEY。
enum _MIKEY_
{
Valid=0,
Pass,
Fail
}MIKEY;

hdp0717 2010-06-03
  • 打赏
  • 举报
回复
那不是与我原来的本意完全不匹配了啊,呵呵
pengzhixi 2010-06-03
  • 打赏
  • 举报
回复
可以改成int类型的形参试试

69,785

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧