0

最近、友人からコーディングの課題を手伝ってほしいと頼まれました。彼の C コードをコンパイルしてデバッグ プロセスを支援しようとしましたが、コンパイルされず、代わりに次のエラーが返されました。

割り当て 3.c:12: エラー: 「ランダム」の型が競合しています</p>

/usr/include/stdlib.h:224: エラー: 'random' の以前の宣言がここにありました

割り当て 3.c:51: エラー: 「ランダム」の型が競合しています</p>

/usr/include/stdlib.h:224: エラー: 'random' の以前の宣言がここにありました

したがって、これが意味することは、stdlib.h (ヘッダー ファイル) 内に既に定義されている「ランダムな」関数があることです。違いは、彼がコード ブロックを使用していたのに対し、私は Mac OSX ターミナル (GCC) を使用していたことです。私が知る限り、この 2 つはどちらも 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 ただし、私の質問は、以下のコメントでジョナサン・レフラーによって回答された可能性があると思います。ありがとう!

4

2 に答える 2

1

あなたはほとんど答えを自分自身に与える:

標準ライブラリ (/usr/include/stdlib.h の 224 行目に示されている) では、次のように定義randomされています。

long     random(void);

一方、あなたは:

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

明らかに、コンパイラがフラグを立てる競合があります。別の名前を選択してください。この問題はコードブロックとは関係ありません。

于 2013-06-03T06:01:42.900 に答える
-1

Mac では、一部のヘッダー ファイルには、他のオペレーティング システムに含まれていない他のヘッダー ファイルが含まれています。たとえば、iostreamMac に含める場合stdlib.hは、 も含まれます。Linux では、これは当てはまりません。

于 2013-05-30T06:26:54.593 に答える