C11标准6.5.2.3中给出了以下示例
以下不是有效片段(因为union类型在函数f中不可见):
struct t1 { int m; };
struct t2 { int m; };
int f(struct t1 *p1, struct t2 *p2)
{
if (p1->m < 0)
p2->m = -p2->m;
return p1->m;
}
int g()
{
union {
struct t1 s1;
struct t2 s2;
} u;
/* ... */
return f(&u.s1, &u.s2);
}
为什么联合类型对函数f可见有关系?
我在翻阅有关的部分时,看不出其中有甚么不容许这样做的地方。
这是因为6.5.2.3第6段(着重部分后加):
为了简化联合的使用,有一个特殊的保证:如果一个联合包含多个共享公共初始序列的结构(见下文),并且如果联合对象当前包含其中一个结构,则允许在可以看到联合的完成类型声明的任何地方检查其中任何一个结构的公共初始部分。如果一个或多个初始成员的序列对应的成员具有兼容的类型(并且对于位字段,宽度相同),则两个结构共享一个公共的初始序列。
这不是一个需要诊断的错误(语法错误或约束冲突),但行为未定义,因为structt1
和structt2
对象的m
成员占用相同的存储空间,但因为structt1
和structt2
是不同的类型,所以允许编译器假设它们不是--特别是对p1->m
的更改不会影响p2->m
的值。例如,编译器可以在第一次访问时将p1->m
的值保存在寄存器中,然后在第二次访问时不从内存中重新加载它。
本文向大家介绍C++ 中strcpy标准写法实例详解,包括了C++ 中strcpy标准写法实例详解的使用技巧和注意事项,需要的朋友参考一下 strcpy标准写法 实例代码: 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
正在尝试使用CLI将ssh插入AppEngine实例。我有正确的命令,但不确定如何为标准实例允许ssh,或者这根本不可能。我是Gcloud(AWS Guy)的新手。他们的文档在实例类型和允许或不允许的方面不是很好。有人对此有什么建议吗。提前道谢!
问题内容: 我面临以下问题。我有一张非常大的桌子。该表是以前从事该项目的人员的传承。该表在MS SQL Server中。 该表具有以下属性: 它有大约300列。它们都具有“文本”类型,但是其中一些最终应表示其他类型(例如,整数或日期时间)。因此,在使用它们之前,必须先将这些文本值转换为适当的类型 该表有100余行。该表的空间很快将达到1 TB 该表没有任何索引 该表没有任何已实现的分区机制。 您可
我正在将Vue与一个名为AEM的CMS进行集成,该CMS基本上可以像Vue一样作为组件基础系统工作。而不是有一个网页和进口的。vue文件,此CMS上的每个组件都是一个新的vue实例(新的vue({…}))。因此,在我的页面上,有许多Veu实例使用同一个存储(vuex)彼此通信。 这实际上工作得很好,但我有一个场景,当我需要一个CMS组件在另一个组件中时。由于这两个组件都是唯一的vue实例,并且父级
这类似于@inject每次使用时都注入一个新实例,但我在那个线程中找不到答案。 我对CDI和JSF都很陌生,我正在尝试使用CDI而不是JSF注释。我想从MemberController检索凭据。bean本身(两者)都是从jsf页面调用的。问题是MemberController中的Credential实例的名称/密码总是为空,即使我确认Credential中的setter被命中。我不明白为什么有两个