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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在C ++中分配`#input`类型的宏字符串?相关的知识,希望对你有一定的参考价值。

这是我的一个老问题here的后续问题。我找到了一些像这样的代码:

#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的事实在这个编译阶段是无关紧要的。

以上是关于如何在C ++中分配`#input`类型的宏字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何在C中分配复变量的实部和虚部

如何在 C++ 中分配一个二维指针数组

如何在堆中分配值类型数组?

如何在 C 中分配 32 字节对齐的内存

如何在 C 中分配和释放对齐的内存

如何在C中的堆栈中分配超过所需的内存?