【发布时间】:2013-05-30 06:15:19
【问题描述】:
最近,我的朋友让我帮他完成他的编码任务。我尝试编译他的 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) 在下面的 cmets 中可能已经回答了我的问题。谢谢!
【问题讨论】:
-
“
random”是否存在于您朋友的“/usr/include/stdlib.h”副本中? -
哦,stdlib.h可以跨不同的副本有不同的功能?
-
在您显示的代码中没有任何名为
random的内容。而且它没有 12 行,那么第 12 行怎么会出错呢?请向我们提供帮助您所需的信息。 -
您的代码显示
random1(),但问题讨论的是random()...这是您为使其工作而修改的代码的黑客版本吗? POSIX(或至少是单一 Unix 规范)定义了一个由系统库提供并在<stdlib.h>中声明的函数random()。因此,您必须关闭 POSIX 源函数以避免冲突。许多代码对函数使用系统前缀,以避免与其他机器上的系统库中的函数发生冲突。重命名可能是最好的。 -
谢谢乔纳森。我相信这就是我正在寻找的答案。对于我的问题中的所有错误和困惑,我深表歉意。感谢您的帮助!
标签: c macos gcc compilation codeblocks