是否可以使用宏来创建typedef?

时间:2012-07-14 11:11:41

标签: c++ c

如何使用宏(#define)创建typedef?

由于各种原因,我试图用一个宏来做C中的typedef.ing C ++的模板行。

作为示例,我希望预处理器扩展#definetypedef一个struct,其“内容”成员的类型为char

#define DEFINE_FOO_TYPE(content_type__, content_type_name__) \
typedef struct {                                             \
        content_type__ content;                              \
} content_type_name__

DEFINE_FOO_TYPE(char, foo_t);

foo_t foo_var;
foo_var.content = 'g';

显然事实并非如此。是否可以在C中完成这些事情,或者是C ++模板的唯一方式?

按照“为什么不使用C ++模板?”来解决问题。答案是我正在尝试用C语言来做这件事,因为它很有趣。

3 个答案:

答案 0 :(得分:4)

试试这个:

#define DEFINE_FOO_TYPE(content_type__, content_type_name__) \
typedef struct {                                             \
    content_type__ content;                              \
} content_type_name__

DEFINE_FOO_TYPE(char, foo_t);

int main() {
    foo_t foo_var;
    foo_var.content = 'g';
    return 0;
}

即。使用content_type_name__代替element_type_name__

Proof of compilation

答案 1 :(得分:0)

简单地将最后两行代码放入main() 或任何它肯定会起作用的功能。

答案 2 :(得分:0)

我发表了评论,因为我认为这太微不足道了,但现在是:

  

当然,你不只是将引用的代码粘贴到gcc中,是吗?您不能只在任何函数之外执行代码。将最后一行放在函数中。