[英]Structure and tagged union in c
#define HOST_NAME "UDP"
#define ADDRESS "127.0.0.1"
struct UDP_IP_Parameters {
uint version; /* e.g. "1.0" = 0x0100 */
uint port; /* PORT */
taggedunion {
"HOST_NAME" char[256];
"ADDRESS" char[15];
};
};
int main()
{
struct UDP_IP_Parameters udp;
udp.version = 0x0100;
udp.port = 444;
}
我创建了一个嵌套在其中的结构和taggedunion。 可以像上面那样将主机名和地址定义为常量吗? 是否可以通过为其创建对象来分配一些值。 任何人都可以给我一些想法。
那不是C.
不,您不能在类型声明中指定值。
你最接近的可能是:
typedef struct {
uint16_t version; /* Guessing size requirements. */
uint16_t port;
bool resolved;
union {
char host_name[256];
char address[24];
} addr;
} UDP_IP_Parameters;
以上使用已resolved
标志来“标记”联合,因此程序可以知道联合的哪个成员有效。
您应该能够像这样初始化一个实例:
UDP_IP_Parameters so = { 0x100, 80, false, { "stackoverflow.com" } };
不确定(在C99中)您是否可以使用虚线语法来执行此操作:
UDP_IP_Parameters so = { 0x100, 80, true, { .address = "198.252.206.16" } };
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.