C++ 博尔兰C++;5.02如何设置环境变量

C++ 博尔兰C++;5.02如何设置环境变量,c++,environment-variables,C++,Environment Variables,我知道这是个老编译器,我别无选择。我想从C中设置一个环境变量,但是函数setenv不存在,或者至少我找不到它,而putenv似乎不起作用 在我的代码中,我调用: putenv("CPU=ELAN"); 但它不会创建和设置环境变量。如果我使用以下方式手动创建应用程序,则我正在从DOS外壳运行该应用程序: SET CPU=ELAN 它是有效的,我四处寻找解决方案,但什么都没有,我也尝试过: system("SET CPU=ELAN"); 这也不起作用。也许putenv报

我知道这是个老编译器,我别无选择。我想从C中设置一个环境变量,但是函数setenv不存在,或者至少我找不到它,而putenv似乎不起作用

在我的代码中,我调用:

    putenv("CPU=ELAN");
但它不会创建和设置环境变量。如果我使用以下方式手动创建应用程序,则我正在从DOS外壳运行该应用程序:

    SET CPU=ELAN
它是有效的,我四处寻找解决方案,但什么都没有,我也尝试过:

    system("SET CPU=ELAN");

这也不起作用。

也许putenv报告了一些错误?它应该设置errno。(顺便说一句:系统(…)无法工作,因为它正在创建和执行外部进程)-如何检查环境变量是否已设置?-是像您的示例中那样使用字符串文字进行设置,还是它实际上是某个变量?(请注意,如果它是变量,
putenv()
直接使用该值,因此如果它被更改或销毁,环境变量也会直接受到影响)启动程序时,它会继承父进程的副本。putenv()函数正在工作,但仅在您编写的程序的环境中工作。当程序退出时,它所处的环境就消失了。处理这个问题的一个聪明方法是让你的程序将“setcpu=ELAN”输出到一个批处理文件中。程序退出后,再调用该批处理文件。根据目标平台的不同,我建议您改为使用。@BradBales是的,如果您在程序终止后检查env变量,情况确实如此。使用
putenv()
设置变量仅在程序生存期内有效。您可以在同一个程序中通过
getenv()
(调用
putenv()
)检查变量是否已设置,但在程序退出后该变量将不可用。可能putenv报告了一些错误?它应该设置errno。(顺便说一句:系统(…)无法工作,因为它正在创建和执行外部进程)-如何检查环境变量是否已设置?-是像您的示例中那样使用字符串文字进行设置,还是它实际上是某个变量?(请注意,如果它是变量,
putenv()
直接使用该值,因此如果它被更改或销毁,环境变量也会直接受到影响)启动程序时,它会继承父进程的副本。putenv()函数正在工作,但仅在您编写的程序的环境中工作。当程序退出时,它所处的环境就消失了。处理这个问题的一个聪明方法是让你的程序将“setcpu=ELAN”输出到一个批处理文件中。程序退出后,再调用该批处理文件。根据目标平台的不同,我建议您改为使用。@BradBales是的,如果您在程序终止后检查env变量,情况确实如此。使用
putenv()
设置变量仅在程序生存期内有效。您可以在同一程序内通过
getenv()
(调用
putenv()
后)检查变量是否已设置,但该变量在程序退出后将不可用。