#define宏不会打印变量

时间:2015-02-08 05:10:09

标签: c

我有这段代码:

#define PRINT(fmt, ...) printf("%s:%d: "fmt, __FILE__, __LINE__, ##  __VA_ARGS__)

当我传递一些值时效果很好,例如PRINT("Hello, world"). 但是当我将变量作为参数传递时,例如。 PRINT(somevar)它不会打印变量int somevar的值。我应该如何重写宏以使其也能打印变量?

1 个答案:

答案 0 :(得分:3)

问题不在于宏。这是你如何使用它。基本上,您的使用要求您使用PRINT和格式字符串,格式字符串必须是一个字符串文字,描述如何处理后续参数。

例如,尝试

PRINT("x = %d y = %d\n", x, y);

其中xyint类型的变量。