C 是否允许在内置添加溢出中使用别名?

C 是否允许在内置添加溢出中使用别名?,c,C,我目前有一个代码库,它使用容易发生整数溢出的加法和乘法。我正试图用\u内置的\u add\u overflow()函数替换它。在阅读源代码时,我发现以下格式的许多事件: x+=y; 我可以用\u内置\u添加\u溢出(x,y和x)替换它吗?或者我需要一个如下所示的临时变量吗 inttmp; 如果(uuu内置_u添加_u溢出(x、y和tmp)){…} x=tmp; 前两个参数按值传递。只有最后一个是指针。 在这种情况下不可能存在别名问题。通过值传递创建副本(至少在概念上是这样,因为内联/静态函数和

我目前有一个代码库,它使用容易发生整数溢出的加法和乘法。我正试图用
\u内置的\u add\u overflow()
函数替换它。在阅读源代码时,我发现以下格式的许多事件:

x+=y;
我可以用
\u内置\u添加\u溢出(x,y和x)
替换它吗?或者我需要一个如下所示的临时变量吗

inttmp;
如果(uuu内置_u添加_u溢出(x、y和tmp)){…}
x=tmp;

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

将不会回答您的问题,但另一种处理溢出的方法是