- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 N2346::6.5.2.5/15
很困惑和 N2346::6.5.2.5/16
哪个国家(emp。我的)
15 EXAMPLE 8 Each compound literal creates only a single object in agiven scope
struct s { int i; };
int f (void)
{
struct s *p = 0, *q;
int j = 0;
again:
q = p, p = &((struct s){ j++ });
if (j < 2) goto again;
return p == q && q->i == 1;
}The function f() always returns the value 1.
16 Note that if an iteration statement were used instead of anexplicit goto and a labeled statement, the lifetime of the unnamedobject would be the body of the loop only, and on entry next timearound p would have an indeterminate value, which would result inundefined behavior.
N2346::6.5.2.5/5
If the compound literal occurs outside the body of a function, theobject has static storage duration; otherwise, it has automaticstorage duration associated with the enclosing block.
N2346::6.8/3
(我的):
The initializers of objects that have automatic storage duration, andthe variable length array declarators of ordinary identifiers withblock scope, are evaluated and the values are stored in the objects(including storing an indeterminate value in objects without aninitializer) each time the declaration is reached in the order ofexecution, as if it were a statement, and within each declaration inthe order that declarators appear.
goto
N2346::6.5.2.5/15
示例中的语句替换为迭代语句,每次到达时都应重新创建由复合文字创建的对象。
goto
用迭代语句产生 UB?我的推理有什么问题?
最佳答案
even if the goto statement in the example of N2346::6.5.2.5/15 isreplaced with an iteration statement the object created by compoundliteral should be re-created each time it's reached.
q = p
上触发在第二次迭代中,当
p
不再有效,也在
return
上迭代语句之外的行。
struct s { int i; };
int f (void)
{
struct s *p = 0, *q;
int j = 0;
for (j = 0; j < 2; j++)
{
q = p; // p is invalid in the second iteration
p = &((struct s){ j++ });
} // end of block - p is no longer valid!
// p points to an object whose storage duration has expired, and so this is undefined behavior
return p == q && q->i == 1;
}
你可以看到最后的
return
引用一个对象的语句,该对象的存储持续时间在
for
结束时到期块,以及
q
变量被分配给在第二次迭代中未定义的指针。
goto
用法之间的定义差异和一个迭代语句,如
for
循环是在
for
内部创建的对象循环仅有效
在循环范围内 .
关于为给定范围创建一次复合文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69070100/
由于 typescript 现在支持条件类型,我决定进行一些元编程,为 VSCODE intellisense 添加更多 flavor 。但是,虽然使用 A extends B 可以轻松分离其他类型,
我有一个 php var,它在回显时将 JS 函数写入页面的源代码。该函数循环遍历 CSV,因此其中包含以下行: $str="var lines = data.split('\n');"; 目前,当回
我有以下代码: name= "a"; value="b" $.post("ajax.php", {name:value}).... 然而 ajax.php 将收到 name=b 而不是 a=b。 我如
以下情况: var myVehicle = { brand: 'Tesla' }; var isMoving = Symbol(); var currentStatus = Symbol(); myV
我正在为 Python 翻译器编写 JavaScript,“\8”和“\9”给我带来了很多问题。根据文档,像“\8”或“\9”这样的东西是非法的,因为它们不是有效的八进制转义符。 Esprima pa
我有一个简单的 LinearLayout。当我将 android:background 添加到 LinearLayout 时,TextView 不再可见。 我不明白什么?
在尝试获得某种效果时遇到困难: 我有一张图片。我想将鼠标悬停在它上面。它应该变黑并弹出一些文本。 例子^ 执行此操作最简单/最简单的设置是什么?最好只有 HTML 和 CSS 注意:该元素需要在 CS
考虑以下代码: #include void f(const char * str) { str = "java"; } void main (int argc, char * argv[])
我想在 MySQL 中插入一条具有非 ASCII Unicode 字符的记录,但我在一个不允许我轻松键入非 ASCII 字符的终端上。如何在 MySQL 的 SQL 语法中转义 Unicode 文字?
Perl脚本batchReplace.pl可以用来批量替换文件中的文字/代码。可在指定目录中查找指定类型的文件,并递归检查子目录;在输出文件时复制输入文件的目录结构。 [附件]Win32应用程序b
我知道从 flutter 应用程序共享的官方包。 https://pub.dartlang.org/packages/share 共享文本和 url 很容易,但我想共享来自服务器的图像意味着它是 UR
在 Qt 文档中,它说 qreal是一个 Typedef for double unless Qt is configured with the -qreal float option. 这基本上意味
我想让 idris 证明 testMult : mult 3 3 = 9有人居住。 不幸的是,这是键入为 mult (fromInteger 3) (fromInteger 3) = fromInte
如您所知,Apple 为 NSNumber、NSDictionary、NSArray 等类提供了 @literals,因此我们可以通过这种方式创建对象,例如 NSArray *array = @[ob
有没有办法在类型上定义公共(public)文字(C# 中的公共(public) const)?显然 let 类型中的绑定(bind)必须是私有(private)的,并且 Literal 属性不能应用于
为什么下面的语法不能识别 bool 值? 我已经将其与 Java 和 GraphQL 的语法进行了比较,但不明白为什么它不起作用。 给定以下语法,解析如下: foo = null // foo = v
当我需要一个文字来测试一个带有序列的函数时,我注意到我自己的习惯比列表更频繁地使用向量。 IE。 : (map inc [1 2 3]) 但不是: (map inc (list 1 2 3)) 虽然它
是否可以在sqlite中制作类似的东西? FOREIGN KEY(TypeCode, 'ARawValue', IdServeur) REFERENCES OTHERTABLE(TypeCode, T
在我这学期的系统软件类(class)中,我们正在学习汇编程序和其他系统软件。在阅读整个类(class)时,我遇到了LITERALS主题。 对文字和立即操作数进行了比较,发现它们之间的唯一区别是文字不被
我正在使用命令行语法编写一个 gstreamer 管道来发送视频流,并想用它发送数据。我认为可行的一种解决方案是将数据作为字幕文件发送。 我可以使用以下管道通过 rtp 多路复用视频和字幕文件: gs
我是一名优秀的程序员,十分优秀!