无法初始化联合中的第二个项目

Tim*_*per 2 c initialization unions

我与宣言有一个联盟:

union test_u
{
    int i;
    char *str;
};
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用代码尝试使用"second"字段中的数据初始化变量:

union test_u test = {"Sample"};  // char *, not int
Run Code Online (Sandbox Code Playgroud)

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

file.c:72:11:警告:初始化从指针生成整数而没有强制转换

是否有可能以与上面相同的方式初始化变量?编译器(在C89下)是否应该在初始化中接受一个intto char *

Jac*_*lly 5

在C99中,可以使用指定的初始化程序:

union test_u test = { .str = "Sample" };
Run Code Online (Sandbox Code Playgroud)