gpt4 book ai didi

c++ - 调用函数中没有在被调用函数主体之前特别排序的这些评估是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:30:27 27 4
gpt4 key购买 nike

[intro.execution]/15 在 N4140 的第 11 页包含这些语句(强调是我的):

When calling a function (whether or not the function is inline), every value computation and side effect associated with any argument expression, or with the postfix expression designating the called function, is sequenced before execution of every expression or statement in the body of the called function. [ Note: Value computations and side effects associated with different argument expressions are unsequenced. —end note ] Every evaluation in the calling function (including other function calls) that is not otherwise specifically sequenced before or after the execution of the body of the called function is indeterminately sequenced with respect to the execution of the called function.9

9) In other words, function executions do not interleave with each other.

我想知道在被调用函数的主体执行之前没有明确排序的调用函数中的这些评估是什么?


* 编辑 * 我在问题 "sequence before" and "Every evaluation in the calling function" in C++ 中要求两个答案与我的问题无关。请阅读我的问题和其中给出的答案。另请参阅我对@CoryKramer 在下面给出的答案的评论。


* Edit 2 * 这可能是我问题的答案。请参阅 DR 1949 中的第 3 号决议提案:

在调用函数(包括其他函数调用)中的每一个没有特别说明的求值在被调用函数的主体执行之前或之后排序不确定地排序为关于被调用函数的执行 对于每个函数调用 F,对于在 F 内发生的每个评估 A 和每个不在 F 内发生但在同一线程上评估并作为同一信号的一部分的评估 B处理程序(如果有),要么 A 在 B 之前排序,要么 B 在 A 之前排序。9 [注意:如果 A 和 B 不会以其他方式排序,那么它们将不确定排序。 ——尾注]

最佳答案

如果你有两个函数返回 int

int Foo();
int Bar();

然后你有一些调用函数

void SomeFunction(int x, int y);

然后调用代码看起来像

SomeFunction(Foo(), Bar());

他们说 FooBar 的执行顺序是不确定的。

关于c++ - 调用函数中没有在被调用函数主体之前特别排序的这些评估是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34860809/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com