我有这段代码:
#define PRINT(fmt, ...) printf("%s:%d: "fmt, __FILE__, __LINE__, ## __VA_ARGS__)
当我传递一些值时效果很好,例如PRINT("Hello, world").
但是当我将变量作为参数传递时,例如。 PRINT(somevar)
它不会打印变量int somevar
的值。我应该如何重写宏以使其也能打印变量?
答案 0 :(得分:3)
问题不在于宏。这是你如何使用它。基本上,您的使用要求您使用PRINT和格式字符串,格式字符串必须是一个字符串文字,描述如何处理后续参数。
例如,尝试
PRINT("x = %d y = %d\n", x, y);
其中x
和y
是int
类型的变量。