gpt4 book ai didi

C++ 标准库 - std::setenv 与 setenv

转载 作者:可可西里 更新时间:2023-11-01 15:10:16 30 4
gpt4 key购买 nike

我有一个简单的 std::setenv 调用,它在我的 gcc 下的 Linux 发行版上运行良好。但是,在我的 Mac OS X 上使用 clang 时,出现以下错误。

error: no member named 'setenv' in namespace 'std'; did you mean simply 'setenv'?
std::setenv(name.c_str(), value.c_str(), true);

我确定,我在某处读到 setenv 是 C++11 中命名空间 std 的一部分,但现在我不确定。

问题:应该使用setenv还是std::setenv,为什么会这样?

最佳答案

我没有find任何类似 std::setenvcppr , 只有 std::getenv在其文档中引用了 POSIX 函数 setenv ,当然namespace std 中。

因此,由于您没有调用 C++ 标准函数,因此应该采用普通 setenv 方法,因为这是定义函数的标准定义它的方式。请注意,std::setenv 允许(但不是必需)工作。 (另见 hvd's comment。)

对于标准爱好者:setenv 仅作为

Calls to the function getenv shall not introduce a data race (17.6.5.9) provided that nothing modifies the environment. [ Note: Calls to the POSIX functions setenv and putenv modify the environment. — end note ]

来自 N3797 18.10.5。它确实不是 C++ 标准函数,因此不一定在 namespace std 中。

关于C++ 标准库 - std::setenv 与 setenv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30292642/

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