GCC编译器 - 代码块和Mac OSX(XCode)之间的潜在差异?

时间:2013-05-30 06:15:19

标签: c macos gcc compilation codeblocks

最近,我的朋友让我帮他完成编码任务。我尝试编译他的C代码来帮助他完成调试过程,但它没有编译,而是返回了以下错误:

  

作业3.c:12:错误:'随机'的冲突类型

     

/usr/include/stdlib.h:224:错误:先前声明'随机'在这里

     

作业3.c:51:错误:'随机'的冲突类型

     

/usr/include/stdlib.h:224:错误:先前声明'随机'在这里

所以,我知道这意味着stdlib.h(头文件)中已经定义了一个“随机”函数,但我没有得到的是为什么它为他编译完全没问题。不同之处在于他使用的是代码块,而我使用的是Mac OSX终端(GCC)。据我所知,这两个都使用GCC编译器,所以我想知道为什么会有差异。任何澄清都会很棒。谢谢!

更新 一些代码示例来解释错误。这里显示的random()是第12行。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void readColsRows(int* cols, int* rows);
int** allocMemory(int* minima, int* maxima,int rows, int cols);
void random(int*** table, int rows, int cols);
void maxMinFinder(int** table, int* minima, int* maxima,int rows, int cols);
void printTable(int** table, int rows, int cols);

我不想把所有代码放在这里,因为它是用于家庭作业。 :X但是,我认为Jonathan Leffler在下面的评论中可能已经回答了我的问题。谢谢!

2 个答案:

答案 0 :(得分:1)

你差点给自己答案:

标准库(如第224行/usr/include/stdlib.h中所示)将random定义为

long     random(void);

而你这样做:

void random(int*** table, int rows, int cols);

显然,编译器标记存在冲突。选择其他名称。该问题与代码块无关。

答案 1 :(得分:-1)

在Mac上,某些头文件包含其他操作系统中未包含的其他头文件。例如,如果您在Mac上包含iostream,则也会包含stdlib.h。在Linux上,情况并非如此。