简体   繁体   English

在OSX上编译错误,但在Windows或Linux上则没有

[英]Compiling error on OSX but not on Windows or Linux

I have a C program that I was able to compile on windows using Code Block (which I believe uses GCC compiler) and on Linux using terminal gcc compiler. 我有一个C程序,可以在Windows上使用Code Block(我相信使用GCC编译器)在Windows上以及在Linux上使用终端gcc编译器进行编译。 I tried to compile it on OSX using eclipse, code block for mac, terminal gcc, and even Qt but they all give me the same set of errors: 我试图使用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,
^

It is most likely due to git. 这很可能是由于git。

stdlib.h on OS X already has a method called mergesort in it, so you cannot have that method declared in your code. OS X上的stdlib.h中已经有一个称为mergesort的方法,因此您不能在代码中声明该方法。

I suggest changing the name of mergesort to something else, like myMergesort (or something along that line). 我建议将mergesort的名称更改为其他名称,例如myMergesort (或类似的名称)。

Source: See here. 资料来源: 见这里。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM