gpt4 book ai didi

c - 如何让cmd.exe中的GCC显示所有错误

转载 作者:行者123 更新时间:2023-11-30 20:05:15 25 4
gpt4 key购买 nike

我一直在 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 个错误:

  1. 没有“foo.h”头文件
  2. printf("bar") 没有分号
  3. int main 无返回值

如何改进我的 cmd 命令以使 gcc 显示所有错误?

最佳答案

在您的情况下调用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),然后你的代码是正确的。

顺便说一句,您可能应该改善习惯并经常(例如每隔几分钟)编译源代码。另外,使用像 git 这样的版本控制系统,并每天多次提交源代码(当它编译时)。

如果您使用一个好的编辑器(例如 GNU emacs ),您可以轻松地配置它来构建您的项目(例如运行 make ),通过 M-x 编译,只需按一下按键即可。对于一个小型项目(少于 10 万行 C 源代码),适本地组织在几个 translation units 中,并使用像 GNU make 这样的优秀构建器,增量地重新编译它应该需要几秒钟的时间大多数,而且您可以经常这样做。

关于 main 中缺少 return (特别是 main)(您的错误#3),这(奇怪地)符合 C11标准§5.1.2.2.3(n1570):

reaching the } that terminates the main function returns a value of 0

关于c - 如何让cmd.exe中的GCC显示所有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32585072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com