4
是否有一个C代码片段,可以在不使用编译器内置函数的情况下有效地计算溢出安全加法?
这是一个C函数,将C添加int到另一个函数,如果发生溢出将失败: int safe_add(int *value, int delta) { if (*value >= 0) { if (delta > INT_MAX - *value) { return -1; } } else { if (delta < INT_MIN - *value) { return -1; } } *value += delta; return 0; } 不幸的是,GCC或Clang 无法对其进行优化: safe_add(int*, int): movl (%rdi), %eax testl …