|
|
1
3
只要使用此API的代码只获得
另一个可能的考虑因素是是否有任何代码依赖于
|
|
|
2
4
像这样扩展结构可能是有意义的:
然后可以安全地将newt指针用作t指针;C标准保证结构的第一个元素之前没有填充。 |
|
|
3
2
如果T真的以疯狂和未知的方式被广泛使用,那么这样的变化很可能会破坏某些东西。在某个地方,将有一段代码具有局部t声明,而不是使用头文件,或者将“mystruct*”强制转换为“t*”,或者其他同样令人反感的代码。 |
|
|
4
1
是的-当您使用这样的不透明指针时,它与内容无关。只要您的用户只使用不透明指针,您就可以随意处理结构及其实现。 |
|
|
5
0
疯狂和未知是不好的。最好的办法是浏览struct t的代码库并检查它是如何使用的,用另一种方法来更改它,看看是否有什么东西中断了……如果代码只使用不透明指针,那么您应该在安全方面。如果代码访问成员,但没有做一些奇怪的事情,那么您也应该是安全的,完全重新编译。 如果它做了一些奇怪的事情,比如紧身衣的例子,即使是Jukka的小费也可能帮不上忙。代码可以使用sizeof的硬编码值在这些结构的数组中执行指针算术… |
|
|
wavesinaroom · 断言结构向量长度 1 年前 |
|
fghoussen · 在C结构体中,为什么打包、对齐似乎会进行填充? 1 年前 |
|
|
kamkow1 · 匿名结构的初始值设定项错误无效 1 年前 |