c - 无法初始化 union 中的第二项

标签 c initialization unions

我有一个 union 声明:

union test_u
{
    int i;
    char *str;
};

我正在尝试用“第二”字段中的数据初始化一个变量,使用代码:

union test_u test = {"Sample"};  // char *, not int

尝试编译时,我收到错误:

file.c:72:11: warning: initialization makes integer from pointer without a cast

是否可以按照我上面的方式初始化变量?编译器(在 C89 下)不应该在初始化时接受 intchar * 吗?

最佳答案

在 C99 中,可以使用 designated initialisers :

union test_u test = { .str = "Sample" };

关于c - 无法初始化 union 中的第二项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10923178/

相关文章:

c - 将十进制的二进制存储在 char 数组中

c - 无法使用 realloc : "invalid next size" 扩展数组

c - 为没有 gdb 标志 -g 构建的图像调试核心文件

ios - Cocos2d : Should I use only (id)init for initializing, 或者我可以使用 (void)onEnter 进行后期分配吗?

c++ - 是否必须初始化成员才能获取其地址?

c - C/GCC 4.6.3 中的 union 填充值

c - (C) 如何使用动态内存进行字符输入?如何以某种方式组织输入的值?

c - 初始化结构指针 - c

c - 使用 uint32_t 和 GCC 原子指令 union 32 位结构

c - union 在 Linux 进程描述符中的用法