#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。可以像上面那样将主机名和地址定义为常量吗?是否可以通过为其创建对象来分配一些值。任何人都可以给我一些想法。
答案 0 :(得分:2)
那不是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" } };