我必须使用哪个编译器来理解 C 行为的确切行为

我必须使用哪个编译器来理解 C 行为的确切行为

我对 c 编译器感到困惑。据我所知,对于程序员来说,代码并不重要,但内部行为非常重要。因为如果我们知道编译器对特定代码的行为,那么我们可以轻松编写程序。但我非常喜欢 linux。我的系统是 linux 平台,到现在我都没有使用过 windows,因为我讨厌 windows 操作系统。我不知道 turbo C 的行为如何。

在我的 Linux 系统中,我有 gcc 版本 4.8.2(Ubuntu 4.8.2-19ubuntu1)。但我在一个网站上学习到,我们不应该直接使用 main(),我们应该使用int 主要()就像那样。但是我的编译器在编译下面的代码时没有错误。

#include <stdio.h>

main() { /* ... */ }

我要参加面试,所以我必须遵循哪个编译器来建议我?我对 C 语言一头雾水。我想知道linux内核是基于哪个编译器编写的?

答案1

$ gcc -Wall -pedantic -o hw hw-no-return.c
hw-no-return.c:1:1:警告:ISO C90 不允许使用 C++ 样式注释 [默认启用]
 // ‘Hello World!’ 程序
 ^
hw-no-return.c:1:1: 警告:(每个输入文件仅报告一次)[默认启用]
hw-no-return.c:5:1:警告:返回类型默认为“int”[-Wreturn-type]
 主要的()
 ^
hw-no-return.c:在函数‘main’中:
hw-no-return.c:9:1:警告:控制到达非 void 函数的末尾 [-Wreturn-type]
 }
 ^
$ cat hw-no-return.c
// ‘Hello World!’ 程序

#包括 <stdio.h>

主要的()
{
  printf(“你好,世界!\n”);

}

$ gcc -o hw hw-no-return.c
$ ./hw
你好世界!
$

相关内容