ファイル名: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でコンパイルしただけなので、なぜこのような差異が出てくるのかが不思議です。
これはこのコードのどこに問題があるのでしょうか?ずっと格闘しているのですが、全く分かりません。
どうか教えてください、よろしくお願いします。