您最常用的C宏,用于打印不同类型的变量值

时间:2010-08-26 05:57:39

标签: c macros debugging printing

请与我们分享您最喜欢的,最常见的PRINT或DEBUG宏 适用于不同类型的所有(或几乎所有)变量以及C中的数组。宏 可以有任意数量的参数(虽然1-3是首选);如果它增加 描述能力,可以假设C99特征。

#define PRINT(var, ...) \
   ...

我们开始吧!

1 个答案:

答案 0 :(得分:1)

对于C ++,模板函数可以比宏更强大。

template <typename T>
std::string tostring(const T& t);

模板参数的缺点是它无法区分typedef别名:

typedef LONG HRESULT;

对于C,我认为在没有改变你的结构的情况下你无能为力。如果你可以控制结构定义,这里有两个技巧:

在结构的开头添加一个字段,并将该字段设置为唯一标识结构类型的值,tostring函数可以使用该值来选择适当的打印代码。

typedef struct abcde
{
    int unique_struct_type_id; // assign this to a number that represents "abcde"
};

类似的方法是传入一个函数指针来打印结构。

struct abcde
{
    void (*print_fn) (abcde* p);  // assign this to the printing function for "abcde"
}
#define PRINT_STRUCT(s) s->print_fn(s)
相关问题