2017-02-05 2 views
1

言語Cで始まり、プログラムをコンパイルしようとしましたが、このエラーがあります。コンパイルエラーオプション-std = c99または-std = gnu99

エラーが:「for」ループ初期宣言が唯一のC99モード私は私のMakefileのオプション-std=c99を含めたい

に許可されているが、私はそれをどこに置くか分かりません。

# Compilatore 
CC=gcc 
CFLAGS=-W -g -Wall $(OPTLEVEL) 
BINFOLDER=./bin 
SRCFOLDER=./src 
OBJFOLDER=./obj 

all: test 

test: $(OBJFOLDER)/tas-data.o $(OBJFOLDER)/tas-fct.o $(OBJFOLDER)/tas-io.o $(OBJFOLDER)/tas-main.o 
    $(CC) -o $(BINFOLDER)/tas-main $(OBJFOLDER)/tas-data.o $(OBJFOLDER)/tas-fct.o $(OBJFOLDER)/tas-io.o $(OBJFOLDER)/tas-main.o 

$(OBJFOLDER)/tas-main.o: $(SRCFOLDER)/tas-main.c $(SRCFOLDER)/tas-io.h $(SRCFOLDER)/tas-fct.h $(SRCFOLDER)/tas-data.h 
    $(CC) -o $(OBJFOLDER)/tas-main.o -c $(SRCFOLDER)/tas-main.c 

$(OBJFOLDER)/tas-data.o: $(SRCFOLDER)/tas-data.c $(SRCFOLDER)/tas-data.h 
    $(CC) -o $(OBJFOLDER)/tas-data.o -c $(SRCFOLDER)/tas-data.c 

$(OBJFOLDER)/tas-fct.o: $(SRCFOLDER)/tas-fct.c $(SRCFOLDER)/tas-fct.h $(SRCFOLDER)/tas-data.h 
    $(CC) -o $(OBJFOLDER)/tas-fct.o -c $(SRCFOLDER)/tas-fct.c 

$(OBJFOLDER)/tas-io.o: $(SRCFOLDER)/tas-io.c $(SRCFOLDER)/tas-io.h $(SRCFOLDER)/tas-data.h 
    $(CC) -o $(OBJFOLDER)/tas-io.o -c $(SRCFOLDER)/tas-io.c 

clean: 
    rm -f $(BINFOLDER)/tas-main $(OBJFOLDER)/*.o 

cleanall: clean 
    rm -rf $(BINFOLDER)/* 
+1

' CFLAGSは良い場所のようだ。 – Michael

+1

@Michael CFLAGSが使われていないことを除いて。実際にルールに追加する必要があります。 –

答えて

3

コンパイル時に指定するフラグ/オプションに挿入する必要があります。 CFLAGSに他のオプションが挿入されているので、このオプションをCFLAGSに入れることができます。

CFLAGS=-W -g -std=c99 -Wall $(OPTLEVEL) 

使用CFLAGSこのようなMakefileのあなたのコンパイルコマンドで:

$(CC) $(CFLAGS)-o $(OBJFOLDER)/tas-main.o -c $(SRCFOLDER)/tas-main.c 

EDIT

あなたのMakefileをこのように変更する必要があります:

# Compilatore 
CC=gcc 
CFLAGS=-Wextra -g -std=c99 -Wall $(OPTLEVEL) 
BINFOLDER=./bin 
SRCFOLDER=./src 
OBJFOLDER=./obj 

all: test 

test: $(OBJFOLDER)/tas-data.o $(OBJFOLDER)/tas-fct.o $(OBJFOLDER)/tas-io.o $(OBJFOLDER)/tas-main.o 
    $(CC) $(CFLAGS) -o $(BINFOLDER)/tas-main $(OBJFOLDER)/tas-data.o $(OBJFOLDER)/tas-fct.o $(OBJFOLDER)/tas-io.o $(OBJFOLDER)/tas-main.o 

$(OBJFOLDER)/tas-main.o: $(SRCFOLDER)/tas-main.c $(SRCFOLDER)/tas-io.h $(SRCFOLDER)/tas-fct.h $(SRCFOLDER)/tas-data.h 
    $(CC) $(CFLAGS) -o $(OBJFOLDER)/tas-main.o -c $(SRCFOLDER)/tas-main.c 

$(OBJFOLDER)/tas-data.o: $(SRCFOLDER)/tas-data.c $(SRCFOLDER)/tas-data.h 
    $(CC) $(CFLAGS) -o $(OBJFOLDER)/tas-data.o -c $(SRCFOLDER)/tas-data.c 

$(OBJFOLDER)/tas-fct.o: $(SRCFOLDER)/tas-fct.c $(SRCFOLDER)/tas-fct.h $(SRCFOLDER)/tas-data.h 
    $(CC) $(CFLAGS) -o $(OBJFOLDER)/tas-fct.o -c $(SRCFOLDER)/tas-fct.c 

$(OBJFOLDER)/tas-io.o: $(SRCFOLDER)/tas-io.c $(SRCFOLDER)/tas-io.h $(SRCFOLDER)/tas-data.h 
    $(CC) $(CFLAGS) -o $(OBJFOLDER)/tas-io.o -c $(SRCFOLDER)/tas-io.c 

clean: 
    rm -f $(BINFOLDER)/tas-main $(OBJFOLDER)/*.o 

cleanall: clean 
    rm -rf $(BINFOLDER)/* 
+0

答えをありがとう、私は良いところに-std = c99オプションを追加しましたが、まだ同じエラーがあります –

+0

コンパイルコマンドで 'CFLAGS'を使いましたか? – Rishi

+0

あなたの質問にマイケルと@ n.mのコメント。あなたの質問に答えるには十分です。 – Rishi

関連する問題