2017-08-23 13 views
0

自分のシステムにビジュアルスタジオをインストールしました。したがって、対応するコンパイラと環境変数が設定されます。私がclコマンドを使用してCファイルをコンパイルしようとすると、正常に動作します。今、私は別のシステムからmingWを圧縮し、私のシステムにそれを抽出しました。私はそれがD:/ mingWにあると言う。今私は、cファイルをコンパイルするためのバッチファイルを作成しました。バッチファイルの内容は、mingW/cygwinをインストールせずにgccを使用してcコードをコンパイル

set gccPath=D:/mingW/bin 
%gccPath%/gcc.exe -c -std=c99 -o myC.o ../myC.c -I..\. 

です。このバッチファイルを実行すると、エラーはほとんど発生しません。 そのようなエラーは、コンパイラは、Visual Studioの代わりに、MinGWのデフォルトのヘッダファイルのstdio.hのを取るという事実に

stdio.h:209:71: error: macro "snprintf" requires 5 arguments, but only 4 given 

上記のエラーがあるかもしれないです。 別のエラーは、私は完全にmingwのを使用して、Cファイルをコンパイルするバッチスクリプトで変更する必要がありますどのような

error: previous declaration of 'xxxxFun' was here 

です。 コンパイルプロセスは、我々は、Visual Studioを使用する場合に成功しているが、私たちは、ファイル

EDIT

の同じセットのためのgccを使用する場合、エラーがスローされます。私は後者のエラーを修正し 。 stdio.hが最初に含まれている場合、最初のエラーは発生しません。しかし、インクルードセクションの途中にstdio.hをインクルードすると、エラーが発生します。我々が持っている場合は

#include <string.h> 
#include <assert.h> 
#include <minmax.h> 

#include "myFunctions.h" 
#include "MyModule.h" 
#include <stdio.h> 

stdio.hの示すように、最後の、エラーが来ています。 #include <stdio.h>行を#include <MyModule.h>の上の他の行に移動すると、指定されたエラーは発生しません。この奇妙な行動の背後にある理由は何ですか?

+1

*インストール*したくない理由は何ですか?管理者権限が欠落している場合は、「インストールする」ことができます。 [msys2](http://www.msys2.org/)にあなたが書き込み権限を持っているディレクトリを作成してください。シェルには、すべてがうまくコンパイルされてコンパイルされるように設定されています( '' pacman' )。 –

+0

@FelixPalmen私のコードは、ユーザーから異なるコンパイラ(win64gcc、win32gcc =>はminGWまたはCygwinでもかまいません)へのパスを取得し、指定されたコンパイラを使用して指定されたCコードをコンパイルします。 – Nandha

+0

これは非常に珍しいことです。代わりに、あなたがサポートしているツールチェーン(例えば、バッチファイルや 'msvc'用のmsbuildスクリプト、' gcc'/'clang'用のMakefileなど)を使って構築する手段を提供してください。 –

答えて

0

snprintfのいずれかのヘッダーファイルでマクロを使用しているかどうかを確認してください。このエラーは、間違った/不必要なマクロが原因で発生する可能性があります。

関連する問題