我目前有一个使用整数溢出倾向加法和乘法的代码库。我正在尝试将其替换为__builtin_add_overflow()
功能。阅读源代码后,我发现以下格式的许多事件:
x += y;
我可以将其替换为__builtin_add_overflow(x, y, &x)
还是需要一个临时变量,如下所示?
int tmp;
if (__builtin_add_overflow(x, y, &tmp)) { ... }
x = tmp;
前两个参数按值传递。只有最后一个是指针。在这种情况下不会出现混淆问题。传递值会创建副本(至少从概念上讲,因为内联/静态函数和内建函数可能会欺骗常规函数调用ABI)。内置函数获取的副本,x
并且该副本不再影响原始副本x
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句