-1
我有這個宏和這個主要功能。C調試打印宏不打印
#define DEBUG_INFO(format, args...) \
fprintf(stdout, "%12s: %3d: %s ", __FILE__, __LINE__, green), \
fprintf(stdout, format, ##args)
int32_t main()
{
if (server_init())
{
DEBUG_INFO("Child process wasnt created");
}
return 0;
}
當我的主要功能開始工作。它將返回server_init()的值。我也在server_init()中使用了DEBUG_INFO。宏觀線後。在server_init()中,宏沒有寫任何東西。但是,如果server_init()返回False值。那麼主函數的宏將寫入錯誤。爲什麼不能在函數中使用宏。
您需要使用'\ n'或使用'fflush'刷新輸出緩衝區。 –
在消息字符串的末尾添加一個換行符,或者在宏的末尾添加'putchar('\ n')'強制添加一行(在另一個逗號操作符之後),或者...您確定這是一個好主意將調試信息寫入標準輸出?使用標準錯誤更爲常規,並且「stderr」通常沒有完全緩衝(因此它是行緩衝或無緩衝的),並最大限度地減少了消息不出現的風險。 –