定义了一个宏 debug_printf() ,怎么不能用呢?
定义了一个宏 debug_printf() ,怎么不能用呢?___代码______________________________________
#include <stdio.h>
#define DEBUG_PRINTF
#if define DEBUG_PRINTF
#define debug_printf(...) fprintf(stderr, ...)
#else
#define debug_printf(...) do{}while(0);
#endif
int main (void)
{
debug_printf ("hello\n");
return 0;
} printf有实现吗???
你想printf到哪里显示?? printf是标准输出吧
我是显示在标准输出上 #if define DEBUG_PRINTF
#define debug_printf printf
#else
#define debug_printf(...) do{}while(0);
#endif
这样应该就可以了 是#if defined(DEBUG_PRINTF)吧 你的程序是电脑程序吗??如果是那就输出在屏幕上,如果是单片机,你想输出在哪个所谓的“标准”输出上,如果是串口终端,那某些单片机需要编写输出串口的函数的,不是每个mcu都自动支持的~~~~ to ilcvm:
如果想替代 fprintf (stderr, ...)呢?
to security:
是的,是#if defined(DEBUG_PRINTF)
to LitePuter_uvn:
是输出到屏幕上,不是单片机,是linux上的程序
谢谢三位高手啊~ #define debug_printf(format,...) fprintf (stderr,format, __VA_ARGS__)
不过这种在MDK的编译器是不能debug_printf ("hello\n")这样用的,只能debug_printf ("%s","hello\n"),就是必须有参数 to ilcvm:
活学活用了一下你的帖子,我这样写就都可以了:
#define debug_printf(...) fprintf (stderr, __VA_ARGS__)
___代码______________________________________
#include <stdio.h>
#define DEBUG_PRINTF
#if defined DEBUG_PRINTF
#define debug_printf(...) fprintf (stderr, __VA_ARGS__)
#else
#define debug_printf(...) do{}while(0);
#endif
int main (void)
{
debug_printf("hello\n");
debug_printf("hello, %d\n", 10);
return 0;
} 谢谢 ilcvm!
这ourdev 真是太好了,其它地方得不到回答的地方,总会在这里得到解答
谢谢阿莫! 关于可变参数宏,这个网页的文章写得比较好:
http://blog.sina.com.cn/s/blog_661314940100qmfg.html
我的例子define debug_printf() 那里也可以这样写:
#define debug_printf(format, ...) fprintf (stderr, format, ## __VA_ARGS__)
注意:
少了 ## 编译会通不过
页:
[1]