相关疑难解决方法(0)

警告C4996:此功能或变量可能不安全 - 与POSIX上的GCC相比

我注意到MS编译器给出了cstdlib类似函数的"弃用"警告getenv.MS已经发明了自己的标准,如_dupenv_s.

问题1

AFAIK主要的"不安全"的事情是关于重入*.由于MS的CRT被标记为"多线程"(/MT),为什么它们不能替换getenv为可重入,线程安全的版本?是否有人会依赖不安全的行为?

问题2

我用GCC编译了相同的代码,g++ -Wall -Wextra -Weff++ -pedantic foo.cpp并没有产生任何警告.所以我猜这不是POSIX的问题?这是怎么解决的?(好吧也许他们只是改变了行为getenv,很高兴得到这个确认).

*说它只是关于重入是一种过于概括的说法.当然,我们有类似的东西strncpy_s可以完全改变签名并处理缓冲区大小.但并没有改变这个问题的核心

c++ windows gcc visual-c++

20
推荐指数
3
解决办法
1万
查看次数

标签 统计

c++ ×1

gcc ×1

visual-c++ ×1

windows ×1