参数在C中的类型不完整
我正在写一些代码,当我尝试测试我的代码到现在为止,我得到一个错误 这是我的密码:参数在C中的类型不完整,c,enums,compiler-errors,incomplete-type,C,Enums,Compiler Errors,Incomplete Type,我正在写一些代码,当我尝试测试我的代码到现在为止,我得到一个错误 这是我的密码: #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; }; typ
#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;
}
我不能使用枚举作为参数,或者我在这里做错了什么?它需要如下:
enum mips_opcode { add = 0, addu, sub, subu }; // type name is "enum mips_opcode"
typedef enum mips_opcode mips_opcode_t; // type alias
甚至:
typedef enum { add = 0, addu, sub, subu } mips_opcode_t; // alias of anon. type
不要混淆类型名和变量
顺便说一句,Posix为类型保留后缀,我相信…它应该是这样的:
enum mips_opcode { add = 0, addu, sub, subu }; // type name is "enum mips_opcode"
typedef enum mips_opcode mips_opcode_t; // type alias
甚至:
typedef enum { add = 0, addu, sub, subu } mips_opcode_t; // alias of anon. type
不要混淆类型名和变量
顺便说一下,Posix为类型保留后缀,我相信…这一行是罪魁祸首:
enum { add = 0, addu, sub, subu } mips_opcode;
您正在声明一个名为mips_操作码的匿名枚举类型的变量
应改为:
enum mips_opcode { add = 0, addu, sub, subu };
枚举列表的名称紧跟在单词enum之后。这一行是罪魁祸首:
enum { add = 0, addu, sub, subu } mips_opcode;
您正在声明一个名为mips_操作码的匿名枚举类型的变量
应改为:
enum mips_opcode { add = 0, addu, sub, subu };
<枚举列表的名称正好在EnUM的后面。< /P>我很惊讶它没有阻塞,它应该给你一个错误,因为MiSsPopCo码是一个变量,不是一个类型。我认为PRITNFNO错误是这里的实际笑话…看来你混淆了C和C++。在C中,结构定义不是TyEDEFF。@ WielpLase:在C++中,结构定义也不是Type。Kerrek的注释扩展,请参见。在几乎所有的情况下,StultMIPS都相当于MC++中的MIPS,除非您有名字隐藏,这通常是很糟糕的做法。我很惊讶它在没有阻塞的情况下已经走了很远。它应该给您在线上的TyWebug Enm MIPsII操作码MIPSSOPCODEDET中一个错误,因为MIPSX操作码是一个变量,不是一种类型。我认为PRITNFNO错误是这里的实际笑话…看来你混淆了C和C++。在C中,结构定义不是TyEDEFF。@ WielpLase:在C++中,结构定义也不是Type。Kerrek的注释扩展,请参见。在几乎所有的情况下,StultMIPS都相当于C++中的MIPS,除非你有名字隐藏,这通常是很糟糕的做法。非常感谢它的工作,我会确保下次在变量名和类型之间更好地区分,POSIX将所有的符号保留在任何头文件中。请参阅中的图表。我遇到了相同的错误,这是一个我没有注意到的小错误。请确保即使在尝试了上述内容之后,如果您看到错误,也要检查拼写两次。非常有效,我将确保下次更好地区分变量名和类型EP,POSIX在任何头文件中保留以_t结尾的所有符号,请参见中的图表。我遇到了相同的错误,这是一个我无法注意到的小错误。即使尝试了上述操作,如果您看到错误,请确保检查拼写两次