我用C语言开始,我试着编译我的程序,但是我有这个错误。
错误:“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)/*发布于 2017-02-05 09:00:08
您应该将其放在为编译提供的标志/选项中。由于在CFLAGS中插入了其他选项,所以可以将该选项放在CFLAGS中。
CFLAGS=-W -g -std=c99 -Wall $(OPTLEVEL)在Makefile中的编译命令中使用CFLAGS,如下所示:
$(CC) $(CFLAGS)-o $(OBJFOLDER)/tas-main.o -c $(SRCFOLDER)/tas-main.c编辑
您的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)/*https://stackoverflow.com/questions/42050108
复制相似问题