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__
。如果不编写小型测试程序,这可能会尽可能安全。