如何在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`类型的宏字符串?的主要内容,如果未能解决你的问题,请参考以下文章