Makefile,叮当声OK,gcc错误
当我注释/取消注释clang/gcc时,我有一个makefile,它可以与clang一起工作,而与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=
#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]