首页 > 解决方案 > 在 Windows 上可以使用环境吗?

问题描述

在主要的 Windows C 编译器中变量(从 POSIX 开始)是否environ可用(至少用于阅读)?

我知道这execve在 Windows 上可用:https://en.wikipedia.org/wiki/Exec_(system_call)

但我不确定是否environ也可用。

标签: cwindowsenvironment-variables

解决方案


编辑:我错了;看起来 MSVC 运行时库确实包含对environ(尽管已弃用)的支持。如果有人对替代方法感兴趣,我将在下面留下我之前的答案。


我不知道,但是,如果您想在 Windows 上访问环境变量,您有一些选择:

  1. 声明mainwmain带有以下签名:

    int (w)main(int argc, char/wchar_t *argv[], char/wchar_t *envp[])
    

    这在 C 标准中定义为指向环境块的指针(如果适用):

    § J.5.1

    在托管环境中,主函数接收第三个参数 char *envp[],它指向一个以空结尾的指向 char 的指针数组,每个指针都指向一个字符串,该字符串提供有关此执行的环境的信息程序(5.1.2.2.1)。

  2. 使用 Windows API 函数GetEnvironmentVariable(A|W)获取单个环境变量,或GetEnvironmentStrings获取整个环境数组。

  3. 标准 C 函数getenv


推荐阅读