当询问C中常见的未定义行为时,灵魂比我提到的严格别名规则更加开明.
他们在说什么?
我想隐藏库用户的内部类型.
目前我有这样的事情:
foo.h中
typedef struct public
{
uint16 a;
//...
unsigned char internals[4];
} public_type;
Run Code Online (Sandbox Code Playgroud)
foo.c的
typedef struct public
{
uint32_t a;
}internals_type;
Run Code Online (Sandbox Code Playgroud)
然后在函数中,我正在做一个类似的演员.
void bar(public_type * const public_struct)
{
internals_type* const internals = &public_struct->internals;
intrnals->a = getSomething();
// .....
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?
我已经尝试了一些奇怪的东西与标题中的联合和指针,但没有什么似乎更好,我很好奇,如果这可以得到任何更清洁或至少如果从一种类型指针指向另一种指针的警告可以被删除.