【问题标题】:Nested Structure formatting in CC中的嵌套结构格式
【发布时间】:2021-04-30 13:49:52
【问题描述】:

我遇到了具有以下语法的嵌套结构和联合。我不确定如何更正以下语法。

typedef 结构 1 { .. .. 联盟 { 结构 { .. .. }var1; 结构 { ... ... ... }var2; } .. .. }name_to_struct1

谁能解释这里出了什么问题,以及必须如何给出语法。我看到抛出的错误是 "struct 1" has no member named var1

注意:我使用的编译器不是 C11,因此应避免使用这种类型的未命名结构/联合。

【问题讨论】:

  • 我需要更多的上下文,因为对我来说 "typedef struct { union { struct { int a; double b; }var1; struct { int c; double d; }var2; }; } name_to_struct1; printf("%d\n", asd.var1.a);"这行得通。什么是编译器?
  • C96 编译器。此处为避免编译器警告,使用了一些扩展,但现在我需要删除这些扩展并格式化此语法,以便在没有任何问题的情况下构建它(警告)

标签: c syntax structure union naming


【解决方案1】:

我有点想不通,我从来没有听说过这个编译器,在网上找不到任何关于它的信息。所以,我的最后一个想法是:同时命名联合:

#include <stdio.h>

typedef struct {
    union {
        struct {
            int a;
            double b;
        } var1;
        struct {
            int c;
            double d;
        } var2;
    } uni;
} name_to_struct1;

int main(int argc, char* argv[]) {
    name_to_struct1 asd;
    asd.uni.var1.a = 1;
    printf("%d\n", asd.uni.var1.a);
    return 0;
}

如果不允许使用未命名的结构和联合,也许这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多