2012-07-13 88 views
3

我想獲得一些代碼來編譯,試圖在nameser_compat.h頭文件中使用一些定義。如果設置了一些BIND兼容性,這個文件顯然包含在nameser.h中。什麼是nameser_compat.h,爲什麼不包含它?

我試着在OSX上編譯,顯然這個值沒有設置,因爲它沒有拉入文件。我應該手動將nameser_compat.h導入到我的代碼中添加到nameser.h中嗎?

+0

,看看是否真的包含它,你需要調用GCC與-E,其中預處理後停止編譯。 – alinsoar 2012-07-14 00:09:24

回答

2

在我的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 
$ 

這表明與包含集合,nameser_compat.h標題。源代碼顯示,可以預期:

#ifndef _NAMESER_9_H_ 
#define _NAMESER_9_H_ 

#ifdef BIND_8_COMPAT 
#include <arpa/nameser_compat.h> 
#endif 
相關問題