将constexpr与getEnv(或替代性)一起使用
Using constexpr together with getenv (or alternative)
我正在尝试从构建服务器捕获环境变量,作为可以在构建库中使用的编译时间常数。我有一个静态类,可以对这些常数查询,并且想与std::getenv
一起使用constexpr
,但是由于getenv
返回到期,我会从恒定表达式中开始constexpr变量的错误,因此必须从常数表达式初始化。事实上它在牙齿上有点长。
如果可能的话,我想避免通过将所有env var作为-DMY_ENV_VAR
注入build脚本。如果答案简单地"否,您必须将每个添加为这样的定义",并且没有getenv
的现代替代方案或我可以使用的技巧,那么就可以维护2个斑点,这不是理想的。
getenv
与CC_7进行交互的C 程序的运行时环境从根本上不是编译时间常数。
您指出的char*
vs const char*
问题与此问题无关。
编译时间常数是在编译时固定的。您的运行时环境未在编译时固定。因此getenv
的返回值不能是constexpr
。
您可以创建脚本,该脚本编写包含要存储在constexpr
存储中的构建时间环境变量的标题,而不是一堆-D
命令。
我不认为std :: getEnv可以用作constexpr,因为它是一个运行时系统调用。您的意思是"将要维护2个斑点"?您的静态类只会使用传递到构建的定义,即
class CBuildConsts
{
public:
static const std::string Thing;
}
,然后在.cpp文件中
const std::string CBuildConsts::Thing = std::string("MY_ENV_VAR");
相关文章:
- 多态性和功能结合
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 我应该使用什么来代替void作为变体中的替代类型之一
- 如何将enable-if与模板参数和参数包一起使用
- 如何将PERF_AMPLE_READ与mmap一起使用
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何将C++中的库和头与MinGW一起使用
- 为什么与常规GCC不同,即使有"学究性错误",MinGW-GCC也能容忍丢失的返回类型
- 使用取消引用的指针的多态性会产生意外的结果.为什么?
- 动态多态性C++的替代
- 将constexpr与getEnv(或替代性)一起使用
- 替代性障碍物锁
- 基于PHP示例,与C 中数据结构一起工作的多态性示例
- 将泛型编程与多态性混合在一起
- 将BOOST_FOREACH与恒定的侵入性列表一起使用
- 静态成员变量在C++中如何与多态性一起表现
- 寻找继承/多态性替代方案的任何理由
- C++中的多态性不能与引用一起正常工作
- 为什么不能将多态性与值一起使用,而是引用和指针
- 与多态性一起使用的数组的奇怪输出