我从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)/*
您应该将其放在您为编译提供的标志/选项中。由于CFLAGS
中插入了其他选项,因此您可以将此选项放在 CFLAGS
中。
CFLAGS=-W -g -std=c99 -Wall $(OPTLEVEL)
在生成文件的编译命令中使用CFLAGS
,如下所示:
$(CC) $(CFLAGS)-o $(OBJFOLDER)/tas-main.o -c $(SRCFOLDER)/tas-main.c
编辑
必须以这种方式修改生成文件:
# 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)/*