我正在使用Ariel Faigon的排序库,在这里找到: http://www.yendor.com/programming/sort/
我能够让我的所有代码都在Linux上运行,但不幸的是,当我尝试在Mac上使用GCC进行编译时,它的默认stdlib.h包含另一个heapsort,不幸的是会导致类型冲突的错误。
这是Apple heapsort的手册页: http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man3/heapsort.3.html
在排序库标题中注释掉堆会导致一大堆问题。 (原谅双关语)
我还简要地想过评论我对stdlib.h的使用,但是我使用了malloc和realloc,所以根本不会有用。
有什么想法吗?
答案 0 :(得分:5)
将Ariel Faigon功能的使用隔离在一个不需要使用<stdlib.h>
的单个小文件中。确保在标准C库之前链接Ariel Faigon的库。
答案 1 :(得分:4)
您可以尝试定义_POSIX_C_SOURCE
:
$ gcc -E /usr/include/stdlib.h | grep heap
int heapsort(void *, size_t, size_t,
int heapsort_b(void *, size_t, size_t,
$ gcc -E -D_POSIX_C_SOURCE /usr/include/stdlib.h | grep heap
# No output at all this time
希望_POSIX_C_SOURCE
不会压制你需要的任何东西。
您可以经常使用_POSIX_C_SOURCE
,_BSD_SOURCE
,_XOPEN_SOURCE
,_KEEP_YOUR_STUPID_EXTENSIONS_OUT_OF_STANDARD_HEADERS
的某些组合解决这些问题,...有时它们会相互争斗Jonathan Leffler建议你留下源分区方案。