如何在C++中分配“#input”类型的宏字符串

How are `#input` type macro strings allocated in C++?

本文关键字:类型 字符串 #input C++ 分配      更新时间:2023-10-16

这是我在这里的一个旧问题的后续问题。我找到了一些这样的代码:

#define TYPESUPPORT(T)              
...                                 
static const char* get_type_name()  
{                                   
    return #T;                      
}                                   
...

其中T是变量类型(例如 int (。 #T用于获取宏输入的纯文本名称。

这样做安全吗?例如,#T如何分配?它是否为每个宏调用或其他内容分配const char*const char[]字符串文字,就像我的第一个问题一样?

只是执行文本到文本的翻译。因此,在展开TYPESUPPORT(int)后,函数将如下所示:

static const char* get_type_name()  
{                                   
    return "int";                      
} 

正如链接问题中所述,字符串文字具有静态存储持续时间,因此返回此指针没有问题。它来自#T的扩展这一事实在编译的这个阶段是无关紧要的。