请与我们分享您最喜欢的、最常用的 PRINT 或 DEBUG 宏 适用于所有(或几乎所有)不同类型的变量和 C 中的数组。宏 可以有任意数量的参数(尽管 1-3 是首选);如果它增加 完全没有描述能力,可以假定 C99 特征。
#define PRINT(var, ...) \
...
让我们开始吧!
最佳答案
对于C++,模板函数可以比宏强大得多。
template <typename T>
std::string tostring(const T& t);
模板参数的缺点是它不能区分 typedef 别名:
typedef LONG HRESULT;
对于 C,我认为如果不更改结构,您将无能为力。如果您可以控制结构定义,这里有两个技巧:
在struct的开头添加一个字段,并将该字段设置为唯一标识该结构类型的值,可供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)
关于c - 用于以不同类型打印变量值的最通用的 C 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3572391/