|
|
1
3
既然你是在继承的背景下提出这个问题的,我想一个更完整(更正确)的例子是这样的:
文件:kid.h
这其中有几个问题:
|
|
|
2
2
你可以这样做:
here . 编辑:事实证明,这种方法可能有效,但正如其他人指出的那样,它是可疑的。更好的选择是使用c11中添加的匿名结构扩展,正如@tgregory所指出的,它仍然可以与预处理器一起使用。
编辑2:进一步研究表明,第一种方法(只有预处理器)实际上应该可行。因此,如果您不关心注释分配问题中提到的问题,或者使用memset()/memcpy()等函数可能会出现的问题,那么应该没问题。 资料来源: Are C-structs with the same members types guaranteed to have the same layout in memory? What is the strict aliasing rule?
|
|
|
Timo · 如果宏变量后跟构成有效标识符的字符,则不会展开宏变量 7 年前 |
|
|
user3623498 · 在#if中更改变量时出现问题 7 年前 |
|
|
einpoklum · 来自#cmakedefine替换的意外结果 7 年前 |
|
|
Joseph Franciscus · C中预处理器方法的别名++ 7 年前 |
|
|
stoper · 防止同一宏在多个转换单元中具有不同的定义 7 年前 |
|
|
СеÑгей · MinGW中预处理器g++的奇怪行为 7 年前 |