《C语言的指针 带有联合的结构体使用笔记》
使用带有联合的结构体,如果将结构体声明为指针。需要这样做:
结构体原型:
struct espconn {
/** type of the espconn (TCP, UDP) /
enum espconn_type type;
/* current state of the espconn */
enum espconn_state state;
union {
esp_tcp tcp;
esp_udp udp;
} proto;
/ A callback function that is informed about events for this espconn */
espconn_recv_callback recv_callback;
espconn_sent_callback sent_callback;
uint8 link_cnt;
void *reverse;
};
声明如下:
struct espconn *pesp_conn = (struct espconn *)arg;
使用如下:
pesp_conn->proto.tcp
指针可以指向这个联合,
联合里面的成员必须以点(.)引出。
成员里面的成员还是以指针形式指向如:(->)
下面是我在实际应用是遇到的例子:
struct espconn *pesp_conn = (struct espconn *)arg;
esp_tcp a_esptcp;
os_memcpy(&a_esptcp, pesp