加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – ISO文档中的一点:基于匿名联盟

发布时间:2020-12-16 09:35:35 所属栏目:百科 来源:网络整理
导读:从ISO C标准开始:第9.5节,第4段,第1行: "A union for which objects or pointers are declared is not an anonymous union." 示例: struct X { union { int i; double d; } ; int f () { return i;} }; int main() { return 0; } 根据上述观点,IAm期望该
从ISO C标准开始:第9.5节,第4段,第1行:

"A union for which objects or pointers are declared is not
       an anonymous union."

示例:

struct X {
        union {
               int i;
               double d;
             } ;
        int f () { return i;}      
       };
   int main() { return 0; }

根据上述观点,IAm期望该示例出现错误

但是GCC,SUN编译器CC,EDG等都没有显示错误

我期待这个错误//错误:无法直接访问“i”

请..conform上面的示例程序是正确的是错误的

解决方法

这会使联盟不是匿名的:

struct X {
    union {
        int i;
        double d;
    } *p;
    int f () { return i;}      // !Nyet.
};

干杯&心连心,

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读