编译错误选项 -std=c99 或 -std=gnu99



我从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)/*

最新更新