【发布时间】:2020-02-09 00:31:11
【问题描述】:
代码如下:
int main (int argc, char *argv[]) {
long pid = (long)getpid();
long test = pid + 1;
}
没有包含任何头文件,仍然可以成功编译代码,仍然可以成功运行程序。
为什么?
环境信息:Ubuntu 18.04.2 LTS、gcc (Ubuntu 4.8.5-4ubuntu8) 4.8.5
【问题讨论】:
-
这意味着您使用的是旧版本的 GCC(默认为 C90 而不是 C11 模式)并且没有使用足够的编译器警告选项。
-
请注意,当您的代码不使用任何命令行参数时,最好使用
int main(void)。优化器可以消除main()函数的主体,而不会改变程序的可见行为。