1. 在C和C++里面的不同
在C语言里,定义一个结构体类型要用typedef
typedef struct reg
{
int addr;
int fifo;
int mode;
}reg_tx;
这样定义声明一个变量:reg_tx reg1;
如果不用typedef,则必须这样声明:struct reg reg1;
reg_tx相当于struct reg的别名。
还可以这样写:
typedef struct
{
int addr;
int fifo;
int mode;
}reg_tx;
这样跟上面声明是一样的,但只能这样声明:reg_tx reg1; 不能struct reg reg1;
在C++里,直接声明
struct reg
{
int addr;
int fifo;
int mode;
};
这样定义声明一个变量:reg reg1;
2.在C++里要注意问题
struct reg
{
int addr;
int fifo;
int mode;
}reg1;
//这里reg1是一个变量,相当于reg reg1。
typedef struct reg2
{
int addr;
int fifo;
int mode;
}reg2;
//这里reg2是一个结构体类型。
使用reg时,可直接访问reg1.addr
但使用reg2时,必须声明,如reg2 rx;
然后rx.addr=0x80;