C中的匿名联盟

时间:2015-10-06 18:39:00

标签: c structure unions

我正在尝试了解我所拥有的用例的匿名工会。用例是能够在函数指针表中使用给定方法的不同原型。例如,在下面的代码片段中,myfunc可以有两个变体,一个只接受一个字符串;并且可以接受其他参数。

这是我的代码段 -

warning: initialization makes integer from pointer without a cast
error: request for member `myfuncEx' in something not a structure or union

示例me1和me2似乎提供了正确的结果。 但是例子me3。我试图在结构内静态初始化联合,抛出此错误 -

static const my_struct_t me3 = {myfuncEx_imp};

有人能指出在结构中初始化匿名联合的正确方法。

编辑:我以非常明显错误的方式宣布结构错误,正确的方式 -

prompt = "Enter the name for team {} or enter to finish: "
teams = {}
name = True #to start the iteration
while name:
    name = input(prompt.format(len(teams)+1))
    if name:
        teams[name] = 0

    print('The teams are:\n    ' + '\n    '.join(teams))

1 个答案:

答案 0 :(得分:2)

我昨天碰到了这个。如果不指定union成员,则无法初始化union。否则它是模棱两可的。所以,

static const my_struct_t me3 = { .myfuncEx = myfuncEx_imp };