C gcc编译问题和makefile

标签 c gcc

甚至不太确定我的问题是什么。简而言之,对于一个类,我应该向这个 c 文件添加一些功能,并且它附带了一个方便的 makefile。

CFLAGS=-DUNIX -lreadline -lcurses -ansi -pedantic-errors
DEBUG=-g
#DEBUG=

all: shell

shell:  shell.c parse.c parse.h
    gcc $(CFLAGS) $(DEBUG) shell.c parse.c -o shell
clean:
    rm -f shell *~

我必须向 shell.c 添加功能。我是 C 的新手(通常使用 C++ 或 C#),所以我在一个单独的小 tests.c 文件中测试一些小东西。诸如查看某些系统调用返回的确切内容,如何正确打印它们等等。无论如何,tests.c 似乎符合不同的 c 编译器标准,或者我编译错误。如果我不小心使用//注释掉某些东西或在 shell.c 开头以外的地方声明了一个变量,编译器就会对我大喊大叫。它不关心 tests.c。

我用“gcc tests.c -o tests”编译 tests.c 如果我使用“gcc shell.c parse.c -o shell”编译 shell,它编译得很好,但运行它只会给我一个段错误。我很想问问我的助教这件事,但每次我给他一些东西时他都会回答一个完全不同的问题......

对这里发生的事情有什么想法吗?也许至少在正确的方向上有一点?

最佳答案

问题是您的 makefile 包含编译器的 -ansi -pedantic-errors 标志。这迫使它使用非常旧的 C 版本。也许这个 Makefile 是由您的导师提供的,他想要这样?这并不少见。

要使用这些新功能(// 注释、 block 中任意位置的自动变量)只需删除这两个标志。如果您有足够的自由,我建议您也使用 -std=c99 -Wall

关于C gcc编译问题和makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4811954/

相关文章:

在 Mac OSX 上安装 C 库

python - 为什么需要 __declspec(dllexport) 才能从 ctypes 访问某些函数?

c++ - GCC 不能使用未定义的运算符=

c - 获取函数名称作为符号(而不是字符串)- C 预处理器

c - 设定长度的数组 C 的子集

c - 在 c 中使用 scanf 读取 double 值

c - 为什么字符串文字可能不是字符串?

c++ - CUDA 错误 MSB3191

C 线程互斥代码错误?

java - 在 ARM 处理器上构建 jNetPcap 时出现 "libpcap.so is not a regular file"错误