Linux 有这个不错的功能dprintf
:
函数
dprintf()
andvdprintf()
(在 glibc2 库中找到)与 and 完全类似fprintf()
,vfprintf()
除了它们输出到文件描述符 fd 而不是给定流。
但是,正如同一来源指出的那样:
这些函数是 GNU 扩展,而不是 C 或 POSIX。显然,名字选错了。许多系统(如 MacOS)具有不兼容的函数
dprintf()
,通常称为 的调试版本printf()
,可能带有类似
void dprintf (int level, const char *format, ...);
其中第一个参数是调试级别(输出为 to
stderr
)。此外,dprintf()
(orDPRINTF
) 也是一个流行的调试宏名称printf
。因此,可能最好在旨在可移植的程序中避免使用此功能。
我的问题
如何进行设置以安全地调用dprintf
我想要的(如果存在),或者如果该函数不存在,则无法编译并显示一些合理的错误消息?我想我会做这样的事情:
#ifdef SOMETHING
#define Dprintf dprintf
#else
#error "no dprintf"
#endif
但我不知道SOMETHING
应该是什么。我想我可以将它限制在 Linux 上,但我可以让它更宽松吗?