我一直在windows cmd中使用gcc来编译我的c代码。
这是我正常工作的cmd命令:
gcc test.c -o myprogram
当存在多个错误时,例如此代码:
#include <stdio.h>
#include <foo.h>
int main()
{
printf("bar")
}
只显示这一个错误
error.c:2:19: fatal error: foo.h: No such file or directory
编译终止。
而不是3个错误:
如何改进cmd命令以使gcc显示所有错误?
答案 0 :(得分:2)
在你的案例中调用gcc
的更好的命令是
gcc -Wall -Wextra -g test.c -o myprogram
它要求[几乎]所有警告,一些额外警告和调试信息(使用gdb
)
但是,GCC(或任何合理的编译器)对丢失的包含文件无能为力(因为丢失的文件可能会定义编译其余代码所需的大量名称)。
详细了解C preprocessor,即cpp ...
想象一下,foo.h
包含#define printf(...)
(这不是一个好主意,因为编码为#define printf(...) do{}while(0)
可能是better - 但不是很多,因为printf(3)返回一个整数 - 并且会发现你的错误#2),那么你的代码就是正确的。
如果你使用一个好的编辑器(例如GNU emacs),你可以通过一次按键轻松配置它来构建你的项目(例如,运行make
)到 M-x compile 。对于一个小项目(少于10万行C源代码),适当地组织在几个 translation units中,并使用像GNU make这样的良好构建器,逐步重新编译 最多只需要几秒钟,你可以负担得起。
关于return
中缺少main
(特别是main
)(您的错误#3),这(奇怪地)符合C11标准§5.1.2.2 .3(n1570):
到达终止该{。}的
}
main
函数返回值0