主要无效并使Dos程序不会死亡

时间:2010-06-09 20:48:01

标签: c++ void

  

可能重复:
  Difference between void main and int main?

好吧,所以我正在使用流血冲击器,我要注意的第一件事是我正在使用 2001版C ++绝对是初学者,自2001年以来C ++是否有任何改变会影响本书的有效性?我问,因为我知道php有php5,现在是php6,但我还没有看到任何C ++ 03。

现在因为我问这个原因,在它使用的代码中,

void main (void)

为什么我要一个论证无效?这是做什么的。

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

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

2 个答案:

答案 0 :(得分:8)

烧掉那本书。 void main不仅不符合任何 C ++标准(现代或旧版),而且使用(void)而不是()声明无参数函数是C在C ++中不鼓励的成语。从这个样本中,我不禁想到这本书可能包含的其他恐怖事件。

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

答案 1 :(得分:0)

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

话虽如此:是的,C ++已发生变化,并且正在发生变化,但尚未达到官方标准水平。不同的编译器支持不同范围的更改。我不认为你可能受到它们的影响,但你可能想要无论如何都要注意它们。见:

至于如何结束你的程序。我推荐一个简单的“return 0;”在main中要退出的位置 - 如果要退出并出错,请使用0以外的退出代码。但是你可以省略回报,很多例子都是这样做的,尽管我个人认为这样做很糟糕。

我了解到您在退出应用程序之前使用cin暂停应用程序。对于一般的C ++应用程序来说,这不是必需的,它只是以您的方式运行应用程序的便利。对于示例来说没关系,但是您肯定希望避免使用它来实现真正的应用程序。