这是怎么样的后续问题的我的老问题之一在这里.我找到了一些像这样的代码:
#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在这个编译阶段是无关紧要的.
| 归档时间: | 
 | 
| 查看次数: | 58 次 | 
| 最近记录: |