什么是overflow_usub?

Tam*_*lei 21 c linux-kernel

Linus Torvalds最近以拉动请求为主流新闻.这个拉取请求包含一个函数,overflow_usub它显然是非标准的并且使用某种编译魔术.由于这种咆哮的广泛报道,几乎不可能找到关于这个功能的任何有用信息.我的问题是:什么是什么overflow_usub,何时应该使用它需要什么样的编译器魔术?

Con*_*tin 19

该功能overflow_usub定义为:

static inline bool overflow_usub(unsigned int a, unsigned int b, unsigned int *res){
  *res = a - b;
  return *res > a ? true : false;
}
Run Code Online (Sandbox Code Playgroud)

它将检查减法中的整数溢出,并且不涉及任何编译器魔法.如果编译器没有,它通常是一个后备__builtin_usub_overflow.

  • 他问的问题是什么?true:false`是.空无一人.我看到那些无用的代码太多了. (9认同)
  • 什么是'return*res>是什么意思?true:false;`?它看起来很无用...... (5认同)
  • @Nils在C99中存在bool - 它在stdbool.h中定义 (3认同)