读书人

急求关于结构体取值有关问题

发布时间: 2012-09-06 10:37:01 作者: rapoo

急求关于结构体取值问题
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类型没有成员变量的声明。

C/C++ code
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 

读书人网 >C++

热点推荐