2013-07-10 301 views
0

如何使用C/C++设置环境变量?
我用C设置环境变量

putenv() 

,但之后我跑的代码,环境变异没有任何改变。

代码:

#include <stdlib.h> 
#include <iostream> 
#include <string.h> 
using namespace std; 
int main() 
{ 
    char a[128]; 
    char b[256]; 

    char all[512]; 
    cin>>a; 
    cin>>b; 
    cout<<'\n'; 
    cout<<a<<'\n'; 
    cout<<b<<'\n'; 

    strcpy(all,a); 
    strcat(all,"="); 
    strcat(all,b); 
    cout<<all<<'\n'; 
    cout<<putenv(all); 
} 

我试图函数 “SETENV()” 之前,但错误信息:

错误: 'SETENV' 不是在这个范围内声明

我的操作系统是Windows 7的

IDE代码::块

+0

http://msdn.microsoft.com/en-us/library/83zh4e6k%28v=vs.80%29.aspx“仅影响当前进程本地的环境;不能使用它们来修改命令级环境“。 – BLUEPIXY

+0

这是一些非常奇怪的C代码。也许你有这个问题混淆? –

+0

给科迪格雷非常感谢我努力工作 – Ken

回答

2

I tried the function "setenv()" before but the error message:

error: 'setenv' was not declared in this scope 

stdlib.h标头中声明了setenv函数。您需要包括为了这个头调用该函数:

#include <stdlib.h> 

如果你绝对必须使用这些函数之一,我会优先推荐使用setenvputenv。 Jonathan Leffler详细讨论了here的基本原理。

考虑到无论如何setenvputenv都是非便携式的,我个人更喜欢称为Win32 SetEnvironmentVariable功能。

但我不确定为什么你认为你需要首先修改环境。这个问题并没有解释你想要解决什么问题,也没有说明你期望改变什么。

请记住,这两个函数只会改变调用进程的环境。它们对全球系统环境没有任何影响。

出于测试目的,您需要设置您所选择的环境变量,然后使用类似getenvGetEnvironmentVariable的东西来检索和打印进程的当前环境变量,以确保您的设置已正确。

+0

我必须包括图书馆 但我真的不知道为什么setenv得到那个错误信息 和为什么putenv没有改变任何 – Ken

+0

我真的不喜欢使用windows.h.it让我的程序运行慢 – Ken

+0

包含头文件无法让您的程序变慢。只有您实际使用的声明才会链接到您的应用中。即使如此,所有的Windows函数都在DLL中,所以只有一条指令被编译到代码中。当然不会比stdlib.h中的函数更多。如果你的意思是它会减慢编译速度,你应该使用预编译头文件。像Windows.h这样的系统头文件是从预编译头文件中获益的理想之地。 –

1

putenv()仅影响当前进程。如果在运行代码后检查它们,环境变量保持不变是很自然的。

+0

非常感谢您解决我的问题 – Ken