急求关于结构体取值问题
typedef struct _com_param
{
struct comm{
DWORD port;
DWORD baudrate;
BYTE bytesize;
BYTE parity;
BYTE stopbits;
COMMTIMEOUTS timeoutsorig;
COMMTIMEOUTS timeoutsnew;
};
LPSTR lpszExtra;
}COM_PARAM, *COM_PARAM;
怎样取port的值?
COM_PARAM.comm.port这么取怎么不行
[解决办法]
刚刚才发现,如果就 C 程序编译器来说,4 楼也不是正解:
typedef struct _com_param {
struct _comm {
DWORD port;
DWORD baudrate;
BYTE bytesize;
BYTE parity;
BYTE stopbits;
COMMTIMEOUTS timeoutsorig;
COMMTIMEOUTS timeoutsnew;
} comm;
LPSTR lpszExtra;
} COM_PARAM, *P_COM_PARAM;
5 楼说的对,红色部分才是关键。大家都只是说到楼主的 COM_PARAM 没有变量,但实际上内部的 comm 也没有给出变量名,这样即使声明了变量也无法取值。(对于 C++ 编译器来说,这种写法可能正确)
COM_PARAM param;
像上面这样声明后,才能用 param.comm.port 引用 port 的值。
[解决办法]
顶15L,这里有两个问题:
1,
typedef struct _com_param
{
...
} COM_PARAM, *COM_PARAM;
这里两个COM_PARAM类型重名了。
2,
typedef struct _com_param
{
struct comm {
...
}; // 这里只有成员类型,缺少成员变量
LPSTR lpszExtra;
} COM_PARAM, *COM_PARAM;
strcut comm类型没有成员变量的声明。
typedef struct _foo { struct _bar { int a; int b; } bar; int c;} foo, *pfoo;foo x = {{1, 2}, 3};x.bar.a; // == 1x.bar.b; // == 2x.c; // == 3