Linux有这个漂亮的函数 dprintf :



但是,正如该消息来源指出的那样:


void dprintf (int level, const char *format, ...);



我的问题

我如何进行设置以安全地调用所需的dprintf(如果存在),或者如果该函数不存在,则无法通过合理合理的错误消息进行编译?我想我会做这样的事情:
#ifdef SOMETHING
    #define Dprintf dprintf
#else
    #error "no dprintf"
#endif

但我不知道SOMETHING应该是什么。我想我可以将其限制为仅Linux,但是我可以使其更宽松吗?

最佳答案

看起来dprintf()实际上在POSIX.1-2008中(具有所需的语义),因此您可以执行以下操作:

#if !defined(__GLIBC__) && _POSIX_C_SOURCE < 200809
#error "dprintf may not exist, or may be wrong"
#endif

如果您使用的是gnu构建系统,则定义__GLIBC__。如果不编写小型测试程序,这可能会尽可能安全。

07-27 19:57