c++的getenv总是返回空值

C++ getenv always returns null value

本文关键字:返回 空值 getenv c++      更新时间:2023-10-16

我刚刚添加了环境变量"DataDir",但是getenv函数仍然返回空值。

下面是我的代码:const char *ret = getenv("DataDir");

我重新启动电脑,它完成了。

您记得在运行程序之前导出变量吗?例如,如果您在linux上使用bash shell,通常应该使用export DataDir="..."

在windows上,如果您使用系统设置窗口设置环境变量,它不会立即传播到所有正在运行的程序。如果"I restart my computer and it done."的意思是"重启电脑解决了问题",那么我相信这就解释了问题所在。更改环境变量后,尝试关闭所有程序,然后启动CMD会话(或visual studio)并再次运行程序

您使用的是Windows系统吗?你通过控制面板设置环境变量了吗?如果是这样,那么它只影响在更改设置后启动的进程(您启动的程序)。如果您在命令提示符下运行,而命令提示符没有继承新的环境变量,那么您的程序也不会继承它。

重启后,所有新进程继承新的环境变量。

另一方面,如果设置了变量然后运行程序:

C:>set DataDir=blah
C:>.my_program

则您的程序将继承该变量(但它不会在重新启动时持续存在)。

类似的考虑也适用于Linux和其他系统,但细节有所不同。

请注意,根据您报告的症状,我只是猜测您使用的是什么系统。将来,在问题中提供这些信息会很有帮助(如果不相关,我们可以忽略它)。