首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++标准库- std::setenv vs setenv

C++标准库- std::setenv vs setenv
EN

Stack Overflow用户
提问于 2015-05-17 22:05:13
回答 1查看 9.4K关注 0票数 12

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

代码语言:javascript
复制
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 ,为什么会出现这种情况?

EN

回答 1

Stack Overflow用户

发布于 2015-05-17 22:09:36

我不发现类似std::setenv on cppr的任何东西,只有在其文档中引用POSIX函数setenv (当然不是namespace std中的)的std::getenv

因此,由于您没有调用C++标准函数,所以普通的setenv应该是正确的方法,因为定义该函数的标准就是这样定义它的。注意,std::setenv是允许(但不是必需的)工作的。(另见hvd的评论。)

对于标准爱好者:setenv只被提到为

对函数getenv的调用不应引入数据竞赛(17.6.5.9),前提是不对环境进行任何修改。注意:对POSIX函数的调用setenvputenv修改环境。-尾注

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

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30292642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档