gpt4 book ai didi

c++ - 乱序执行

转载 作者:行者123 更新时间:2023-11-28 06:53:32 25 4
gpt4 key购买 nike

g++ 4.8.2 (cygwin)

testMarkListIO() 语句在 testListIO() 语句之前执行。这有什么原因吗?

bool testIO() {
bool flag = true;

time_t rawtime;
struct tm * ptm;
time ( &rawtime );
ptm = gmtime ( &rawtime );
stringstream pretty;
pretty << "TestIOLog_" << ptm->tm_yday
<< ptm->tm_hour
<< ptm->tm_min
<< ptm->tm_sec
<< ".log";
filename = pretty.str();
flag = (testListIO())? flag: false;
flag = (testMarkListIO())? flag: false;
flag = (testDescriptorListIO())? flag: false;
flag = (testUserDataIO())? flag: false;
flag = (testInclude())? flag: false;

sleep(1);
testResultOutput("Test I/O", flag);
return flag;
}; // bool testIO()

最佳答案

对于这些陈述(以及其他类似的陈述):

flag = (testListIO())?            flag: false;
flag = (testMarkListIO())? flag: false;

如果函数是内联的,并且编译器可以判断除了设置 flag 之外没有任何副作用,它可以自由地对这些语句进行排序,但是它认为只要传递给的值合适testResultOutput() 和从函数返回的结果与严格按顺序执行语句时发生的情况相同。

这通常被称为“好像”规则。本质上,如果可见结果与根据源代码顺序执行它们的结果相同,则编译器可以自由执行它想要的东西。

关于c++ - 乱序执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23459096/

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