C语言 即使我使用它,也要告诉使用 std c99

  • 本文关键字:std c99 语言 c gcc makefile
  • 更新时间 :
  • 英文 :


我试图写一个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

在目的地之前 全部

最新更新