gpt4 book ai didi

c++ - 为什么会有 `std::llabs` ?

转载 作者:行者123 更新时间:2023-11-30 01:09:39 25 4
gpt4 key购买 nike

查看 std::abs 重载形式 cppreference ,我意识到有两个不同的函数做着完全相同的事情,它们都是在 C++11 中引入的:

long long abs( long long n );

long long llabs( long long n );

引入 std::llabs 有什么原因吗?因为可能含糊不清? (虽然我认为后者可以通过简单的转换来解决)。

最佳答案

这是为了 C 源代码兼容性。 C 没有函数重载(没有使用 C11 中的 _Generic 的一些魔术宏)。

因此,如果您希望您的代码在 C 和 C++ 模式下编译,即作为某种库,您可以执行以下操作并让代码在 C++ 和 C 模式下成功编译。

// foo.c
#include <stdlib.h>

#ifdef __cplusplus
extern "C"
#endif
long long foo(long long val) {
return llabs(some_value);
}

如果您要在上面的代码片段中调用 abs,则会在 C 和 C++ 模式下调用不同的函数。

关于c++ - 为什么会有 `std::llabs` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39886414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com