我试图写一个makefile,但告诉我:
$ make -f makefile
cc -c -o source.o source.c
source.c: In function ‘main’:
source.c:5:5: error: ‘for’ loop initial declarations are only allowed in C99 mode
for(unsigned u = 0; u < 5; u++)
^
source.c:5:5: note: use option -std=c99 or -std=gnu99 to compile your code
make: *** [source.o] Errore 1
source.c 是我的程序:
#include <stdio.h>
int main(void)
{
for (unsigned u = 0; u < 5; u++)
printf("%u", u);
int *p;
if (p == NULL)
return -1;
return 0;
}
makefile 是我的 makefile:
all: file
file: source.o
gcc -std=c99 -g -Wall source.o -o file
source.o: source.c
gcc -c -std=c99 -g -Wall source.c
为什么它告诉我使用 c99(或 gnu99),即使我把这个参数放在 makefile 中?
啊哈。我想我知道你的问题是什么。
生成文件中的命令必须使用制表符(而不是空格)缩进。您可能需要调整文本编辑器的设置,使其在此处使用"真实"选项卡。
(使用空格将产生您所描述的结果,其中读取规则但忽略命令。
make
的输出显示C99模式未用于编译源代码。请添加行
CFLAGS=-std=c99 -g -Wall
在目的地之前 全部