c++ - 函数调用可以重新排序吗

标签 c++

我正在使用 C++98。函数调用可以重新排序到什么程度?我没有使用任何全局状态,仅使用函数局部对象的状态。

我的具体情况是:

{
  RaiiType T;
  Object1.FunctionCall();
  Object2.FunctionCall();
}

在下一个作用域中声明了 Object1 和 Object2。 T 的构造函数是否允许在任一函数调用之后重新排序,假设它可以被简单地证明(至少对人类而言)在构造和函数调用之间没有依赖关系?


在我的特定情况下,RAII 对象用于为函数调用的执行计时。

最佳答案

只要符合标准的程序无法区分其 observable behavior 中的差异,编译器(以及系统中的其他组件)可以随意重新排序指令和操作。

关于c++ - 函数调用可以重新排序吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30606924/

相关文章:

c++ - LEX:段错误:11

c++ - 为什么霍夫变换检测到两条线而只有一条线

c++ - 隐藏在派生类中的成员变量

c++ - 在 Visual Studio for C++ 中使用通过 VCPKG 安装的 Qt5

c++ - Windows:UTF-16BE 到 UTF-8

c++ - 在 z3::expr 中使用 C++ 字符串?

c++ - 用于内容检索 (GET) 和数据写入磁盘的多线程

c++ - 对称矩阵中的线性索引

c++ - 像 vector 一样访问 vector 中结构元素的函数

c++ - 从深度纹理采样总是结果为 0