C ++ getenv总是返回null值

时间:2011-09-12 04:23:20

标签: c++

我刚添加了环境变量“DataDir”,但getenv函数仍然返回null值。

这是我的代码: const char * ret = getenv(“DataDir”);

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

2 个答案:

答案 0 :(得分:5)

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

在Windows上,如果使用系统设置窗口设置环境变量,它将不会立即传播到所有正在运行的程序。如果“我重新启动计算机并完成了”。意思是“重新启动计算机解决了问题”,然后我相信这解释了问题。更改环境变量后,尝试关闭所有程序,然后启动CMD会话(或Visual Studio)并再次运行该程序

答案 1 :(得分:2)

你在Windows上运行吗?您是否通过控制面板设置了环境变量?如果是这样,那只会影响您启动的进程(您启动的程序)之后更改了设置。如果您从命令提示符运行,并且命令提示符未继承新的环境变量,那么您的程序也不会继承它。

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

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

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

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

类似的注意事项适用于Linux和其他系统,但细节不同。

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