指向结构中包含的结构的指针
Pointer to a struct included into struct
我正在 Linux 下使用串行端口。因为我的接口很少,所以我定义了两个结构:
typedef struct
{
int handle;
unsigned int port;
unsigned short baudRate;
unsigned char parity;
char device[128];
} tS_PORT;
typedef struct
{
unsigned char testSts;
unsigned char testRet;
tS_PORT sPort;
} tR_PORT;
已声明变量 R01 tR_PORT R01 = { 5,0 };
如何使用 tS_PORT 上的指针?
我尝试了以下代码,但没有预期的结果。
int test(void)
{
int ret;
ret = sOpen(&R01->sPort); // or ? ret = sOpen(R01->&sPort);
return 0;
}
static int sOpen(tS_PORT *pPort)
{
pPort->handle = open(pPort->device, O_RDWR | O_NOCTTY);
if(pPort->handle < 0)
{
perror("open:");
return (-1);
}
return (pPort->handle);
}
... few functions
static int sClose(tS_PORT *pPort)
{
return (close(pPort->handle));
}
编辑 1:
在考虑了 Kerrek SB 的回复之后。它有效,但最后一个函数没有 return 预期值。
int test(void)
{
int ret;
int closeRet;
ret = sOpen(&R01.sPort);
printf("ret = %d\n", ret);
closeRet = sClose(&R01.sPort);
printf("closeRet = %d\n", closeRet);
printf("handle = %d\n", R01.sPort.handle);
return 0;
}
static int sOpen(tS_PORT *pPort)
{
pPort->handle = open(pPort->device, O_RDWR | O_NOCTTY);
if(pPort->handle < 0)
{
perror("open:");
return (-1);
}
return (pPort->handle);
}
... few functions
static int sClose(tS_PORT *pPort)
{
return (close(pPort->handle));
}
哪个 returns :
ret = 4;
closeRet = 0
handle = 4
为什么 handle 不等于 0 端口总是打开的,不是吗?
你想要&R01.sPort
。请注意 R01
不是指针。
我正在 Linux 下使用串行端口。因为我的接口很少,所以我定义了两个结构:
typedef struct
{
int handle;
unsigned int port;
unsigned short baudRate;
unsigned char parity;
char device[128];
} tS_PORT;
typedef struct
{
unsigned char testSts;
unsigned char testRet;
tS_PORT sPort;
} tR_PORT;
已声明变量 R01 tR_PORT R01 = { 5,0 };
如何使用 tS_PORT 上的指针?
我尝试了以下代码,但没有预期的结果。
int test(void)
{
int ret;
ret = sOpen(&R01->sPort); // or ? ret = sOpen(R01->&sPort);
return 0;
}
static int sOpen(tS_PORT *pPort)
{
pPort->handle = open(pPort->device, O_RDWR | O_NOCTTY);
if(pPort->handle < 0)
{
perror("open:");
return (-1);
}
return (pPort->handle);
}
... few functions
static int sClose(tS_PORT *pPort)
{
return (close(pPort->handle));
}
编辑 1:
在考虑了 Kerrek SB 的回复之后。它有效,但最后一个函数没有 return 预期值。
int test(void)
{
int ret;
int closeRet;
ret = sOpen(&R01.sPort);
printf("ret = %d\n", ret);
closeRet = sClose(&R01.sPort);
printf("closeRet = %d\n", closeRet);
printf("handle = %d\n", R01.sPort.handle);
return 0;
}
static int sOpen(tS_PORT *pPort)
{
pPort->handle = open(pPort->device, O_RDWR | O_NOCTTY);
if(pPort->handle < 0)
{
perror("open:");
return (-1);
}
return (pPort->handle);
}
... few functions
static int sClose(tS_PORT *pPort)
{
return (close(pPort->handle));
}
哪个 returns :
ret = 4;
closeRet = 0
handle = 4
为什么 handle 不等于 0 端口总是打开的,不是吗?
你想要&R01.sPort
。请注意 R01
不是指针。