我有一个C程序,可以在Windows上使用Code Block(我相信使用GCC编译器)在Windows上进行编译,而在Linux上使用终端gcc编译器进行编译。我试图使用eclipse,mac的代码块,终端gcc甚至Qt在OSX上编译它,但它们都给了我相同的错误集:
hw1.c:9:19: error: conflicting types for 'mergesort'
struct listnode * mergesort(struct listnode *data)
^
/usr/include/stdlib.h:281:6: note: previous declaration is here
int mergesort(void *, size_t, size_t,
^
hw1.c:27:25: error: too few arguments to function call, expected 4, have 1
ahead = mergesort(ahead);
~~~~~~~~~ ^
/usr/include/stdlib.h:281:1: note: 'mergesort' declared here
int mergesort(void *, size_t, size_t,
^
hw1.c:28:25: error: too few arguments to function call, expected 4, have 1
bhead = mergesort(bhead);
~~~~~~~~~ ^
/usr/include/stdlib.h:281:1: note: 'mergesort' declared here
int mergesort(void *, size_t, size_t,
^
hw1.c:68:25: error: too few arguments to function call, expected 4, have 1
node = mergesort(node);
~~~~~~~~~ ^
/usr/include/stdlib.h:281:1: note: 'mergesort' declared here
int mergesort(void *, size_t, size_t,
^
最佳答案
这很可能是由于git。
OS X上的stdlib.h中已经有一个称为mergesort的方法,因此您不能在代码中声明该方法。
我建议将mergesort
的名称更改为其他名称,例如myMergesort
(或沿该行的名称)。
资源:
See here.
关于c - 在OSX上编译错误,但在Windows或Linux上则没有,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28861562/