首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-09-06 
急求关于结构体取值问题typedef struct _com_param{struct comm{DWORD portDWORD baudrateBYTEbytesize

急求关于结构体取值问题
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 

热点排行