gpt4 book ai didi

c++ - 将 constexpr 与 getenv (或替代方案)一起使用

转载 作者:行者123 更新时间:2023-11-28 02:04:33 25 4
gpt4 key购买 nike

我正在尝试从构建服务器捕获环境变量作为可在构建库中使用的编译时间常量。我有一个可以查询这些常量的静态类,并且想将 constexprstd::getenv 一起使用,但我得到的错误是 constexpr 变量必须从常量表达式,因为 getenv 返回非常量 char*,因为它是 a little long in the tooth .

如果可能的话,我想通过将所有环境变量注入(inject) -DMY_ENV_VAR 来避免膨胀构建脚本。如果答案只是“不,你必须将每个都添加为这样的定义”,并且没有现代替代 getenv 或我可以使用的技巧,那就这样吧,但是有 2 个位置维护,这并不理想。

最佳答案

getenv 与之交互的 C++ 程序的运行时环境基本上不是编译时常量。

您指出的 char*const char* 问题与此问题无关。

编译时常量是在编译时固定的东西。您的运行时环境在编译时并不固定。所以 getenv 的返回值不能constexpr

您可以创建脚本来编写一个 header ,其中包含您要存储在 constexpr 存储中的构建时环境变量,而不是一堆 -D 命令。

关于c++ - 将 constexpr 与 getenv (或替代方案)一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38125635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com