|
楼主 |
发表于 2010-10-11 17:31:09
|
显示全部楼层
【1楼】 ffxz
我原来裸机跑的时候
#ifndef NDEBUG
#define PRINTF_M(S, ...) \
do { \
printf(S, __VA_ARGS__); \
} while (0)
#else
#define PRINTF_M(S, ...) \
do { \
} while (0)
#endif
Release后PRINTF_M(S, ...)就给
do { \
} while (0)
代替了,优化后可能后面就没代码了。但是看了你的rt_kprintf原型
void rt_kprintf(const char *fmt, ...)
{
va_list args;
rt_size_t length;
static char rt_log_buf[RT_CONSOLEBUF_SIZE];
va_start(args, fmt);
length = vsnprintf(rt_log_buf, sizeof(rt_log_buf), fmt, args);
if (_console_device == RT_NULL)
{
rt_hw_console_output(rt_log_buf);
}
else
{
rt_device_write(_console_device, 0, rt_log_buf, length);
}
va_end(args);
}
-----------------------------------------------------------------------------------
1. 不要实现rt_hw_console_output函数
2. 不要调用rt_console_set_device函数设置相对应的设备名。或者设置一个不存在的设备名
好像这样也不能把代码过滤干净吧 |
|