[英]C++ getenv always returns null value
我刚刚添加了环境变量“DataDir”,但getenv函数仍然返回null值。
这是我的代码:const char * ret = getenv(“DataDir”);
我重新启动了电脑,完成了。
你还记得在运行程序之前导出变量吗? 例如,如果你在linux上使用bash shell,你通常应该使用export DataDir="..."
在Windows上,如果使用系统设置窗口设置环境变量,它将不会立即传播到所有正在运行的程序。 如果“我重新启动计算机并完成了”。 意思是“重新启动计算机解决了问题”,然后我相信这解释了问题。 更改环境变量后,尝试关闭所有程序,然后启动CMD会话(或visual studio)并再次运行该程序
你在Windows上运行吗? 您是否通过控制面板设置了环境变量? 如果是这样,那么只会影响您更改设置后启动的进程(启动的程序)。 如果您从命令提示符运行,并且命令提示符未继承新的环境变量,那么您的程序也不会继承它。
重新启动后,所有新进程都将继承新的环境变量。
另一方面,如果设置变量然后运行程序:
C:\>set DataDir=blah
C:\>.\my_program
然后你的程序将继承变量(但它不会在重新启动时持续存在)。
类似的考虑适用于Linux和其他系统,但细节不同。
请注意,我只是根据您报告的症状猜测您正在使用的系统。 将来,在问题中提供这些信息会有所帮助(如果不相关,我们可以忽略它)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.