c++ - 为什么我写一个空的main没有警告?

标签 c++ c visual-studio g++

如果我编写如下程序,g++ 和 visual studio 会礼貌地警告我从未使用过局部变量 a:

int main()
{
    int a; // An unused variable? Warning! Warning!
}

如果我删除未使用的变量(让编译器满意),它会留下以下程序:

int main()
{
    // An empty main? That's fine.
}

现在,我只剩下一个无用的程序。

也许我遗漏了一些东西,但是,如果一个未使用的变量坏到足以引发警告,为什么一个空程序就可以了?

上面的例子非常简单。但在现实生活中,如果我有一个主程序为空的大程序(因为我忘了在其中放入任何东西)。那么发出警告应该是一件好事,不是吗。

也许我在 g++ 或 visual studio 中遗漏了一个选项,当 main 为空时会引发警告/错误?

最佳答案

原因很简单,如果 main 中没有 return 语句,它会隐式返回 EXIT_SUCCESS,这是标准定义的。

所以一个空的 main 就可以了,不需要返回,不需要函数调用,什么都不需要。


要回答为什么 GCC 不警告您的问题,是因为警告可以帮助您解决常见错误。不使用变量会导致困惑的错误和代码膨胀。

然而,完全忘记编写主函数并不是初学者常见的错误,也不值得警告(因为这也是完全合法的)。

关于c++ - 为什么我写一个空的main没有警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10469602/

相关文章:

C++使用指向父类(super class)的指针查找子类的类型

c++ - libstdc++ 是来自系统还是 gcc 或 gcc-c++?

c - 浮点比较 `a != 0.7`

c++ - 如何在监 window 口中转换为未命名命名空间中的类型?

c++ - 通过类的模板参数特化成员模板结构

c++ - 迭代器如何在 C++ 中的列表上工作?

c++ - 我可以用我自己的类(class)包装升压图吗

c - BCM2835 已安装但提供 undefined reference

c++ - C代码的内存要求

c# - VS 扩展 : TextPoint. 大于/小于大文件非常慢