是否允许在__builtin_add_overflow中使用别名?

问题描述 投票:2回答:1

我目前有一个使用整数溢出倾向加法和乘法的代码库。我正在尝试将其替换为__builtin_add_overflow()函数。阅读源代码后,发现以下格式的许多事件:

x += y;

我可以将其替换为__builtin_add_overflow(x, y, &x)还是需要一个如下所示的临时变量?

int tmp;

if (__builtin_add_overflow(x, y, &tmp)) { ... }
x = tmp;
c
1个回答
4
投票

前两个参数按值传递。只有最后一个是指针。在这种情况下不会出现混淆问题。传递值会创建副本(至少从概念上讲,因为内联/静态函数和内建函数可能会欺骗常规函数调用ABI)。内置函数获取x的副本,并且该副本不再影响原始x

© www.soinside.com 2019 - 2024. All rights reserved.