volatile会禁止一些优化,不过volatile不是用来干这个的呀。
gcc有-ftrapv、-fwrapv之类的开关处理这种溢出的编译方式,最终还得靠码农,码农得知道有这么回事,不然某些场合就留下安全漏洞。
BTW:LLVM的作者有篇帖子值得一读
http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html
【 在 fanci 的大作中提到: 】
: 确实不好理解。虽说overflow是UB,但是实用中加法不按无符号加的是神经病。如果把变量变成volatile的会不会好点?
--
修改:z16166 FROM 125.35.120.*
FROM 125.35.120.*