可能重复:
C++ void return type of main()
What is the proper declaration of main?
简单的问题,真的。
我的朋友和我正在仔细阅读下一学期我们应该听到的教授的Powerpoint幻灯片。这将是一门Java课程。出于某种原因,他有这个C ++代码片段
#include <iostream.h>
main ()
{ cout << "Hello, World\n"; }
我已经告诉我的朋友,“不,这不适用于任何现代C ++编译器。”
我现在的问题是,这可以编译吗?
答案 0 :(得分:21)
可以,当然。
例如,考虑<iostream.h>
是否是包含以下内容的标题:
#include <iostream>
using std::cout;
#define main int main
答案 1 :(得分:7)
这不是标准的C ++。对于一段简短的代码来说问题列表很长......可能是因为它来自很久以前和一个旧的不合格的编译器。
包含标题的正确名称为#include <iostream>
,在ANSI标准化期间删除了.h
。
必须在C ++中明确声明类型。你不能在没有返回类型的情况下声明一个函数,并获得一个默认的int
(即C,而不是C ++)。
main的标准签名是:int main()
和int main( int argc, char** )
(实现可以提供额外的参数,但返回类型必须是int
)
cout
在std
命名空间内定义,除非您添加using
,否则无法无限制地使用。
适当的C ++中的等效代码将是
#include <iostream>
int main() {
std::cout << "Hello world\n";
}
答案 2 :(得分:2)
这将编译,但任何体面的编译器都应该发出警告。由于您使用的是#include <iostream.h>
,因此编译器会假定这是旧代码并以向后兼容模式编译它。在我的机器上,gcc说:
In file included from /usr/include/c++/4.2.1/backward/iostream.h:31,
from oldcpp.cpp:1:
/usr/include/c++/4.2.1/backward/backward_warning.h:32:2: warning:
#warning This file includes at least one deprecated or antiquated header.
Please consider using one of the 32 headers found in section 17.4.1.2 of the C++
standard. Examples include substituting the <X> header for the <X.h> header for C++
includes, or <iostream> instead of the deprecated header <iostream.h>.
To disable this warning use -Wno-deprecated.
但它仍然可以很好地编译。在运行代码时,我得到了预期的结果:即:
Hello, World
答案 3 :(得分:1)
这甚至值得质问吗?为什么要编写角落案例C / C ++?遵守标准有什么问题? main()
是程序的入口点,操作系统需要程序返回代码。现在有人认为void main()
是否可以接受,但为什么要为它辩护呢?只需使用int main()
并成为一个写好代码的快乐老兄:
#include <iostream>
int main(int argc, char* argv[]) {
std::cout << "Hello World!\n";
return 0;
}
我用这个开始每个程序(没有HW!然后),从来没有遇到任何问题。