gpt4 book ai didi

c++ - 调用使用 __LINE__ 构建的函数名称

转载 作者:行者123 更新时间:2023-11-28 08:19:17 24 4
gpt4 key购买 nike

假设,我从下面的代码构建了一个独特的函数体:

#define TOKENPASTE(x, y) x ## y
#define TOKENPASTE2(x, y) TOKENPASTE(x, y)
#define UNIQUE static void TOKENPASTE2(Unique_, __LINE__)(void)

如何调用这个函数?

宏定义取自:Creating C macro with ## and __LINE__ (token concatenation with positioning macro) .

最佳答案

没有。你不能。因为您无法在运行时确定函数名称。 (即调用 Unique_22Unique_44 。但是你绝对可以调用 Unique<22>Unique<44> )

所以你可以使用template解决方案。声明Unique如下:

template<unsigned int LINE> void Unique ();

#define像这样的宏:

#define UNIQUE template<> Unique<__LINE__>() {}

我建议使用 __COUNTER__而不是 __LINE__如果你的编译器支持它。[注意:这意味着您可以在任何行中调用 UNIQUE仅一次,宏也应在全局或 namespace 中扩展作用域(不在方法内部)。]

关于c++ - 调用使用 __LINE__ 构建的函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6556100/

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