如何比较C/C99规范和C++规范?

4

我需要确认我可以以某种方式使用联合。

对于C99,这个答案是足够的:Union element alignment

C99 - 第6.7.2.1节 结构和联合说明符(第14段):

指向联合对象的指针,经过适当转换,指向其每个成员(或如果成员是位域,则指向其中所在的单元),反之亦然。

请问有人能帮我找到C ++的等效保证吗?

更一般地,是否有一个好的来源来查找与C中已知功能等效的C ++标准的章节/段落引用?

非常感谢。

2个回答

6
在C++(14882:2003)中,这段文字分成了两个部分:
9.5[class.union]/1
每个数据成员都被分配为一个struct的唯一成员。
9.2[class.mem]/17
通过reinterpret_cast适当转换后,指向POD-struct对象的指针指向其初始成员(如果该成员是位域,则指向其所在的单元),反之亦然。
我还没有听说过类似于C和C++之间的交叉引用,可能不太容易,正如这个例子所示。

良好的引用。更一般地说,C++是基于C的,特别是为了在二进制数据处理级别上实现互操作性,而不仅仅是在源代码级别上。我们可以期望C++联合/结构填充/对齐/布局与等效的C编译器(或编译器的C-only模式)匹配。值得注意的是,并不值得研究每一个小细节,特别是因为在移植/互操作期间确实存在着C和C++之间的差异列表。 - Tony Delroy

0

2
N3092已经一年了(2010年3月26日),请尝试N3242(2011年2月28日)http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf - Cubbi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接