C调试打印宏无法打印

时间:2017-05-01 22:30:17

标签: c macros

我有这个宏和这个主要功能。

#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()中,Macro没有写任何东西。但是如果server_init()返回False值。那么main函数的宏会写错误。为什么在功能上不起作用。

1 个答案:

答案 0 :(得分:1)

您可以调用setbuf(stdout, NULL)来禁用stdout上的输出缓冲,或者只需输出\n来刷新输出缓冲区。第二种选择是可取的。