c - nameser_compat.h 是什么,为什么不包括在内?

标签 c macos bind

我正在尝试获取一些要编译的代码,这些代码尝试使用 nameser_compat.h 头文件中的一些定义。如果设置了某些 BIND 兼容性,则此文件显然作为 nameser.h 的一部分包含在内。

我正在尝试在 OSX 上编译,显然这个值没有设置,因为它没有拉入文件。我应该手动将 nameser_compat.h 导入到我的代码中吗?

最佳答案

在我的 Mac OS X 10.7.4 机器上,我可以找到三个看起来相关的文件:

/usr/include/arpa/nameser.h
/usr/include/arpa/nameser_compat.h
/usr/include/nameser.h

我使用了这段微不足道的代码(在文件 xx.c 中):

#include <nameser.h>
int main(void) { return 0; }

并像这样编译它以获得显示的输出:

$ /usr/bin/gcc -O3 -g -std=c99 -Wall -Wextra -DBIND_8_COMPAT -H -c xx.c
. /usr/include/nameser.h
.. /usr/include/arpa/nameser_compat.h
... /usr/include/machine/endian.h
.... /usr/include/i386/endian.h
..... /usr/include/sys/cdefs.h
...... /usr/include/sys/_symbol_aliasing.h
...... /usr/include/sys/_posix_availability.h
..... /usr/include/sys/_endian.h
...... /usr/include/libkern/_OSByteOrder.h
....... /usr/include/sys/_types.h
........ /usr/include/machine/_types.h
......... /usr/include/i386/_types.h
....... /usr/include/libkern/i386/_OSByteOrder.h
.. /usr/include/sys/param.h
... /usr/include/sys/types.h
.... /usr/include/sys/appleapiopts.h
.... /usr/include/machine/types.h
..... /usr/include/i386/types.h
...... /usr/include/i386/_types.h
.... /usr/include/sys/_structs.h
... /usr/include/sys/syslimits.h
... /usr/include/machine/param.h
.... /usr/include/i386/param.h
..... /usr/include/i386/_param.h
... /usr/llvm-gcc-4.2/bin/../lib/gcc/i686-apple-darwin11/4.2.1/include/limits.h
.... /usr/llvm-gcc-4.2/bin/../lib/gcc/i686-apple-darwin11/4.2.1/include/syslimits.h
.... /Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin11/4.2.1/include/limits.h
..... /Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin11/4.2.1/include/syslimits.h
..... /usr/include/limits.h
...... /usr/include/machine/limits.h
....... /usr/include/i386/limits.h
........ /usr/include/i386/_limits.h
... /usr/include/sys/signal.h
.... /usr/include/machine/signal.h
..... /usr/include/i386/signal.h
...... /usr/include/i386/_structs.h
.... /usr/include/sys/_structs.h
..... /usr/include/machine/_structs.h
...... /usr/include/i386/_structs.h
....... /usr/include/mach/i386/_structs.h
Multiple include guards may be useful for:
/usr/include/sys/_symbol_aliasing.h
$

这表明设置了 -DBIND_8_COMPAT 后,包含了 nameser_compat.h header 。源代码显示这是预期的:

#ifndef _NAMESER_9_H_
#define _NAMESER_9_H_

#ifdef BIND_8_COMPAT
#include <arpa/nameser_compat.h>
#endif

关于c - nameser_compat.h 是什么,为什么不包括在内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11478037/

相关文章:

c - Linux设备驱动程序: Is it possible to pass a char* to unlocked_ioctl?

c - 在这种情况下处理 pthread 通信/信号的正确方法是什么?

linux - 将终端中的字体样式更改为指定的 .ttf 文件

python - 在 Mac 和 Windows 上的 python 中处理\r\n vs\n 换行符

c - 函数中的指针 "expected expression before = token"

c++ - 未使用 -g 选项编译的代码的调用堆栈(gcc 编译器)

swift - 您可以在 Swift 中加载应用程序之前进行测试设置吗?

无法将 TCP 套接字绑定(bind)到本地 IP

JavaScript - 在函数回调之间共享值

c++ - 绑定(bind)类方法到线程