0

可能重复:
void main 和 int main 之间的区别?

好的,所以我使用的是流血编译器,首先我应该注意的是我使用的是 2001 版的 C++ 来作为绝对初学者,自 2001 年以来 C++ 是否有任何变化会影响本书的有效性?我问是因为我知道 php 有 php5,现在有 php6,但我还没有看到任何 C++03。

现在出于我问的原因,在它使用的这段代码中,

void main (void)

为什么我希望一个论点无效?这是做什么的。

但是当我void main (void)在我的编译器中运行它时,它说 main 在它之前必须有一个“int”。所以我不能有 "void" main (void);

此外,一旦代码运行完毕,只要没有“cin”,程序就会关闭。这是正常行为吗,除了在我的程序结束时制作 cin 之外,还有更好的方法来阻止这种情况吗?

4

2 回答 2

8

烧掉那本书。不仅void main不符合任何C++ 标准(现代或旧的),而且声明一个无参数函数 with(void)而不是()C++ 中不鼓励的 C 习惯用法。从这个样本中,我不禁想到这本书可能包含的其他恐怖内容。

控制台窗口关闭的问题与程序的内容完全无关。Windows 有一种行为,如果您直接启动控制台程序,它会在程序结束时自动关闭控制台窗口。为避免这种情况,请自己打开一个控制台窗口,然后在其中运行您的程序。只要您愿意,控制台窗口就会一直保持打开状态。(并且避免使用不幸流行的做法,即在程序末尾添加额外的虚拟输入或“暂停”调用以保持窗口打开。您不应该向程序添加代码以补偿特定方式你碰巧正在启动它;只需以正确的方式启动它,不要管你糟糕的代码。)

于 2010-06-09T20:53:33.507 回答
0

自 2001 年以来发生了对 C++编译器的更改,总体而言,在接受 C++ 之前,它们对 C++ 必须符合标准的程度更加挑剔。例如,gcc 从 2.95 左右一直到 4.4.2。早期的编译器可能让您使用这种形式的 main 滑动,因为它们会使用一些不适合 C++ 的旧 C-isms,但在这种情况下改变的不是语言(至少,就标准而言)。

话虽如此:是的,C++ 已经发生了变化,并且正在发生变化,尽管还没有达到官方标准级别。不同的编译器在不同程度上支持这些更改。我认为您不太可能受到它们的影响,但您可能无论如何都想了解它们。看:

至于如何结束你的程序。我推荐一个简单的“return 0;” 在main你想退出的地方——或者如果你想退出时出现错误,则使用 0 以外的退出代码。但是,您可以省略返回,许多示例都是这样做的,尽管我个人认为这是不好的风格。

我了解您正在使用cin在应用程序退出之前暂停应用程序。这对于 C++ 应用程序通常不是必需的,它只是方便以您的方式运行应用程序。示例没问题,但您肯定希望在实际应用程序中避免这种情况。

于 2010-06-09T21:19:56.143 回答