Makefile,叮当声OK,gcc错误

Makefile,叮当声OK,gcc错误,c,gcc,makefile,clang,C,Gcc,Makefile,Clang,当我注释/取消注释clang/gcc时,我有一个makefile,它可以与clang一起工作,而与gcc一起失败。。。我不知道为什么 #CC=gcc #CFLAGS=-I -std=gnu99 -Wall -Wextra -Werror -pedantic CC=clang CFLAGS=-I -std=gnu99 -Wall -Wextra -Werror -pedantic LIBS=-lpthread -lrt SRC=rivercrossing.c functions.c OBJ=

当我注释/取消注释clang/gcc时,我有一个makefile,它可以与clang一起工作,而与gcc一起失败。。。我不知道为什么

#CC=gcc
#CFLAGS=-I -std=gnu99 -Wall -Wextra -Werror -pedantic

CC=clang
CFLAGS=-I -std=gnu99 -Wall -Wextra -Werror -pedantic

LIBS=-lpthread -lrt

SRC=rivercrossing.c functions.c
OBJ=$(SRC:.c=.o)
DEPS=rivercrossing.h

%.o: %.c $(DEPS)
    $(CC) -c -o $@ $<

rivercrossing: $(OBJ)
    $(CC) $^ $(CFLAGS) $(LIBS) -o $@

.PHONY: clean
clean:
    rm -f *.o rivercrossing
此外,*.o文件不会被删除,当我查看文件夹时,它们仍然存在。为什么?
谢谢您的帮助。

您必须使用C99模式而不是gnu99模式,或者您可以在for循环之外声明变量


有一个编译器开关,它启用C99模式,其中包括允许在for循环中声明变量。要打开它,请使用编译器开关-std=c99

在创建对象文件时需要传递
CFLAGS
。尝试更改
$(CC)-c-o$@$它没有帮助,gcc-c-I-std=gnu99-Wall-Wextra-Werror-pedantic-o functions.o functions.c和以前一样的错误。
error: ‘for’ loop initial declarations are only allowed in C99 mode

error: ISO C90 forbids mixed declarations and code [-Werror=pedantic]
           int stat = 0;
           ^

error: C++ style comments are not allowed in ISO C90 [-Werror]