関数の定義に謎のエラーがでます。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
tk-xleader

関数の定義に謎のエラーがでます。

#1

投稿記事 by tk-xleader » 17年前

VC2005とBCCで、次のコードを実行すると、それぞれその下のようなエラーが出るのですが…

ファイル名:main.c
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

#define ARRAY_SIZE 100

unsigned max(unsigned *data,unsigned size)
{
	unsigned temp_max=0;
	int i=0;
	for(i=0;i<size;i++){
		if(temp_max<data)temp_max=data;
	}
	return temp_max;
}

unsigned min(unsigned *data,unsigned size)
{
	unsigned temp_min=*data;
	int i=0;
	for(i=0;i<size;i++){
		if(temp_min>data)temp_min=data;
	}
	return temp_min;
}

int main(void)
{
	unsigned data[ARRAY_SIZE];
	int i;

	srand((unsigned)time(0));
	for(i=0;i<ARRAY_SIZE;i++){
		data=rand();
	}
	printf("最大:%u,最小:%u",max(data,ARRAY_SIZE),min(data,ARRAY_SIZE));
	return 0;
}

エラーメッセージ:

<VC>

1>------ ビルド開始: プロジェクト: testbccorerror, 構成: Debug Win32 ------
1>コンパイルしています...
1>main.c
1>c:\programfile\vc++\testbccorerror\testbccorerror\main.c(7) : error C2059: 構文エラー : '型'
1>c:\programfile\vc++\testbccorerror\testbccorerror\main.c(17) : error C2059: 構文エラー : '型'
1>c:\programfile\vc++\testbccorerror\testbccorerror\main.c(36) : warning C4047: '>' : 間接参照のレベルが 'unsigned int [100]' と 'int' で異なっています。
1>c:\programfile\vc++\testbccorerror\testbccorerror\main.c(36) : warning C4047: ':' : 間接参照のレベルが 'unsigned int *' と 'int' で異なっています。
1>c:\programfile\vc++\testbccorerror\testbccorerror\main.c(36) : warning C4047: '<' : 間接参照のレベルが 'unsigned int [100]' と 'int' で異なっています。
1>c:\programfile\vc++\testbccorerror\testbccorerror\main.c(36) : warning C4047: ':' : 間接参照のレベルが 'unsigned int *' と 'int' で異なっています。
1>ビルドログは "file://c:\programfile\VC++\testbccorerror\testbccorerror\Debug\BuildLog.htm" に保存されました。
1>testbccorerror - エラー 2、警告 4
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========

<BCC>

> C:\borland\bcc55\Bin\make.exe -fDebug\natural.mak TARGET
MAKE Version 5.2 Copyright (c) 1987, 2000 Borland
bcc32 -WC -WM -3 -Od -w -AT -ps -H -k -Q -b- -v -y -DDEBUG -nDebug -IC:\programfile\Tools\DxLib_Bcc -c C:\programfile\BCC\natural\main.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
c:\programfile\bcc\natural\main.c:
プリコンパイルヘッダの読み込み
エラー E2040 c:\programfile\bcc\natural\main.c 7: 宣言が正しく終了していない
*** 1 errors in Compile ***

** error 1 ** deleting Debug\main.obj

Make End !! (Elapsed time 0:00.234)

というエラーがでてコンパイルできないのですが、これをCygWinのgccで次のようなコマンドでコンパイルすると、全く問題なくコンパイルできました。これはなぜでしょうか?
<コマンドライン>
gcc main.c -omain.exe

一応改行コードの変換だけはしましたが、ファイル名は同じですし、VC上で書いたものをコピペしたコードをBCCやGCCでコンパイルしただけなので、なぜこのような差異が出てくるのかが不思議です。

これはこのコードのどこに問題があるのでしょうか?ずっと格闘しているのですが、全く分かりません。
どうか教えてください、よろしくお願いします。

box

Re:関数の定義に謎のエラーがでます。

#2

投稿記事 by box » 17年前

ある処理系においては
maxやminがマクロか何かとして
定義済みだからではないでしょうか。

別の名前を付けてみてはいかがでしょう。

tk-xleader

Re:関数の定義に謎のエラーがでます。

#3

投稿記事 by tk-xleader » 17年前

ありがとうございます。関数名を変更したところ、うまい事コンパイルが通りました。
どうしてもエラーが分からなかったものですから…最初はVCのバグかと思っていましたが、BCCでも通らなかったので…ずっと悩んでいました。

閉鎖

“C言語何でも質問掲示板” へ戻る