2011-04-22 13 views

答えて

11

それは何の終了条件が存在しない、ことから、やがてのStackoverflowにクラッシュ が、技術的にC++コンパイラは、以来、C++で、それをコンパイルしないように許可されています

main() cannot be called from within a program. 
The address of main() cannot be taken. 
The main() function cannot be overloaded. 

標準が言う:

C Compatibiltyに附属

3.6

Change: Main cannot be called recursively and cannot have its address taken 
Rationale: The main function may require special actions. 
Effect on original feature: Deletion of semantically well-defined feature 
Difficulty of converting: Trivial: create an intermediary function such as mymain(argc, argv). 
How widely used: Seldom 
0

スタックオーバーフローの原因となっているサイトの名前に従います。

あなたのプログラムはifステートメントを実行するたびにスタックに小さな情報を載せて戻すことができます。しかし、スタックオーバーフローの原因となる部屋がなくなるまで、プログラムはこれを繰り返し続けます。

0

main関数がmain関数を呼び出す場合、ネスティングは無制限になります。しかし、それぞれのネストレベルでは少しメモリが必要です。このプロセスが決して終わらないと、最終的に利用可能なメモリ(正確には、数メガバイトの大きさで、実際には多くの関数呼び出しのスタックのメモリ)が実行されます。その後、オペレーティングシステムがプロセスを強制終了します。

2

ISO/IEC 14882:2003(E)、3.6.1(3)

機能メインプログラム内(3.2)を使用してはなりません。 mainのリンケージ(3.5)は実装定義です。 mainをインラインまたは静的と宣言するプログラムは、不正な形式です。メインの名前は他には予約されていません。 [例:メンバ関数、クラス、および列挙型は、他の名前空間のエンティティと同様にmainと呼ばれることがあります。 ]

関連する問題