【发布时间】:2012-11-16 23:24:12
【问题描述】:
我正在编写一些代码,当我尝试测试我的代码时,我得到了一个错误。
这是我的代码:
#include <stdio.h>
enum { add = 0, addu, sub, subu } mips_opcode;
typedef enum mips_opcode mips_opcode_t;
typedef unsigned char byte; // 8-bit int
struct mips {
char *name;
byte opcode;
};
typedef struct mips mips_t;
void init (mips_t *out, char *name_tmp, mips_opcode_t opcode_tmp) {
out->name = name_tmp;
out->opcode = (byte)opcode_tmp;
}
int main (void) {
pritnf("no error i assume\n");
return 0;
}
命令行中的错误是:
main.c:14:55: error: parameter 3 ('opcode_tmp') has incomplete type
我不能使用枚举作为参数还是我在这里做错了什么?
【问题讨论】:
-
我很惊讶它没有窒息而走到这一步——它应该在
typedef enum mips_opcode mips_opcode_t行上给你一个错误,因为mips_opcode是一个变量,而不是一个类型。 -
我认为
pritnf("no error")是这里真正的笑话...... -
看来您混淆了 C 和 c++。在 C 中,结构定义不是类型定义。
-
@wildplasser:在 C++ 中,结构定义也不是 typedef。
-
要扩展 Kerrek 的评论,请参阅 this Dr. Dobb's article。在几乎所有情况下,
struct mips等同于 C++ 中的mips,除非您有名称隐藏(这通常是不好的做法)。
标签: c enums compiler-errors incomplete-type