gpt4 book ai didi

c++ - 我可以定义一个(类型化的)常量,它肯定不会占用可执行文件中的空间吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:06:45 24 4
gpt4 key购买 nike

我有一个类型 T(为简单起见,您可以假设它是整数)。我想写一些神奇的代码,之后我可以在任何上下文中使用标识符 foo,我可以在其中使用之前声明为具有类型 T 的值 - 与无需转换。我还希望 decltype(T) 为 T,同样重要的是 - 我希望保证不会为 foo 分配空间,它只与编译时间。

除了使用 #DEFINE 之外,还有其他方法可以实现吗? AFAICT,constexpr const 不能保证避免空间分配。

最佳答案

没有办法做到这一点,因为标准不强制编译器优化任何东西。 constexpr如果变量不是 odr-used,则它们很可能被优化.

如果可以放宽一些要求:

enum : T
{
foo = some_value
};

尽管您在这里创建新类型,std::underlying_type<>将评估为 T你可以在不转换的情况下使用它 T预期(使用通常的整数转换规则)。它也不需要函数调用语法(constexpr 函数可能是避免空间分配的最佳方法,但它会强制您将语法从 T val = foo 更改为 T val = foo() ,这可能会或可能不会被接受) .

关于c++ - 我可以定义一个(类型化的)常量,它肯定不会占用可执行文件中的空间吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48768910/

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