1
3
DR :
不。
我不确定API用户的观点是什么。事实上,像您所提议的这样的设计可能会产生比通常更大的用户视角多样性,因为明显的预期行为与C语言要求不一致。
对。明确地,
( C2011, 6.7.3/6 )
当ub发生时,编译器可能会做各种有趣的事情。其中更有可能的是,他们可能会假设一些未定义的行为
不
发生。因此,
例如,在编译调用
我认为我的API提供者应该尽最大努力提供符合语言标准的实现。
另外,我想知道你认为是谁通过让结构成员来保护我
至于更好的建议,不让会员加入怎么样
关于编辑 添加对的引用 How to initialize const members of structs on the heap 在标准方面,讨论的案例与这里考虑的案例有重要的不同。动态分配的内存没有声明的类型,但可能具有 有效的 根据写入的内容和/或访问方式键入。相关规则见 paragraph 6.5/6 你可以在其他地方的几个答案中找到关于这个标准的讨论,比如 this one 你在评论中链接的。
底线是,具有分配生存期的对象从写入它的第一个数据中获取其有效类型,并且第一个写入可以被视为其有效初始化(尽管标准中没有使用后一个术语)。后续操作必须遵守有效类型,包括由
具有静态或自动生存期的对象将其声明的类型作为其有效类型,并具有由初始值设定项(如果有)指定的初始值。它们也必须以与有效类型一致的方式进行操作。 |
2
-1
你滥用了与编译器的合同。你申报了什么
不要将结构成员声明为
|
cobb208 · Malloc正在为释放指针引发错误 2 年前 |
kernel · 打印结构数组内容时出错 2 年前 |
mwitz · 在Rust中无法正确写入结构的函数属性 2 年前 |
Ulysses · 无法访问结构字段(Rust) 2 年前 |
Tor · 使用Box<None>值初始化struct 2 年前 |
Yestin · Golang如何初始化数组结构[duplicate] 2 年前 |