gpt4 book ai didi

c++ - 有没有办法避免头文件中使用的 constexpr 函数在没有额外命名空间的情况下进入全局范围?

转载 作者:行者123 更新时间:2023-11-30 01:02:08 24 4
gpt4 key购买 nike

我有一个头文件,其中的代码看起来像这样:

constexpr uint32 GenTag(const char tag[5]) { ... }

class SomeClass
{
static constexpr uint32 TAG1 = GenTag("smth");
static constexpr uint32 TAG2 = GenTag("abcd");
};
//constexpr needed for switch-case statement

问题是函数 GenTag() 属于全局范围,我想尽可能避免使用它。

我想在类中声明它,但使用 constexpr 是不可能的(此处解释:constexpr not working if the function is declared inside class scope)。

C++ 是否在 header 末尾有类似“未声明”的函数(也许是一些宏技巧)?或者我错过的任何其他选择?如果没有更好的方法,我可能会使用额外的(可能是过多的)命名空间,但想问问是否还有其他想法。

最佳答案

在 C++ 中无法“取消声明”一个函数或变量(头文件与否——头文件只是包含在当前的翻译单元中)。您需要使用命名空间,或将 GenTag 制作成宏。您可以使用#undef MACRONAME取消定义宏。

关于c++ - 有没有办法避免头文件中使用的 constexpr 函数在没有额外命名空间的情况下进入全局范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56743117/

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