gpt4 book ai didi

c++ - const int, extern const int, inline constexpr 中哪一个最好?

转载 作者:行者123 更新时间:2023-12-04 07:51:39 25 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

5 个月前关闭。




Improve this question




我有一个头文件,其中有一些 #define 常量(所有整数)。我想用 extern const int 替换 #define 常量,然后在单独的文件中定义它们。但碰巧一些#define 常量被用作数组的大小。所以对于这些常量,我不能用 extern const int 替换。所以我必须找到其他方法来完成这项工作,我找到了两个解决方案,但无法决定哪个更好。

  • 用 const int 替换每个 #define const。唯一的问题是 const int 具有内部链接,因此最终我将在不同的翻译单元中拥有多个拷贝,从而导致我想要避免的多个存储。但是,编译器可以通过用它的值替换每个 const int 用法来优化它,最终不会为成本 int 使用存储。
  • 另一个选项是内联 constexpr(在尝试寻找解决方案时遇到了这个问题)。在这种情况下,可以保证链接器只会保留一份拷贝。

  • 所以内联 constexpr 看起来更好,但是当我开始考虑第一种情况下的优化时,两者看起来都不错。
    请提供建议和理由。

    最佳答案

    constexpr是通常的方法,除非你没有 C++11 支持,在这种情况下你可以这样做:

    enum { MYCONST = 120 };

    关于c++ - const int, extern const int, inline constexpr 中哪一个最好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66938799/

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