前天遇到这样一个问题,在debug目录新建一个空白的文本文件1.txt、2.txt,将代码简化一下:
1、获取Exe路径
2、判断新文件str11.txt、str22.txt是否删除成功:
3、编译器的优化
if(::DeleteFile(str1) ||
::DeleteFile(str2))
{
MessageBox("复制成功!");
}
理论上是要依次判断str11.txt、str22.txt是否删除成功,而编译器在处理类似语句时会直接优化。比如此时“||”前面语句如果为真,编译器就不会再看后面删除str2的表达式了。(当时我的用意是,如果str1,str2中任意一个文件存在就删除)
这是我当时遇到的一个错误,后面在这里郁闷了!幸亏老狼提示是编译器的原因,它自动优化了......
顿时茅塞顿开......
本文介绍了一个C++程序中关于获取程序当前目录并删除指定文件的问题。通过示例代码展示了如何使用GetModuleFileName函数来获取EXE路径,并讨论了编译器对于逻辑运算符短路行为的优化及其可能带来的影响。
224

被折叠的 条评论
为什么被折叠?



