来自 GNU 网站:
此选项指示编译器假设加法、减法和乘法的有符号算术溢出使用二进制补码表示进行回绕。该标志启用一些优化并禁用其他优化。
https://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Code-Gen-Options.html https://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Code-Gen-Options.html
我有两个问题:
- 这些选项中哪个对性能更好?
- 当
-ftrapv
定义说它会产生“陷阱”?这是否意味着例外? (我猜不会,但值得一问。)
The 整点这两个选项的目的是给优化器less比平常有余地。因此,除非您在优化器中遇到错误,否则最快的方法应该是两者都不使用,优化器假设您的代码没有任何溢出,并且不会发出代码来处理溢出。
当 -ftrapv 定义说它生成“陷阱”时,这是什么意思?这是否意味着例外?
这并不意味着 C++ 异常。它依赖于目标,但假设 x86,这意味着 GCC 运行时库会导致 SIGABRT 引发,这通常会中止您的程序。在其他平台上,它可能会使用导致硬件异常的特殊 CPU 指令。它主要用于调试目的,也许在某些情况下出于安全目的,其中溢出后继续的风险大于程序突然终止的风险。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)