3

宣言、定義、およびプリプロセッサディレクティブを除いて、関数の外部にコードを含めることはできません。

その声明は正確ですか、それとも私が見逃しているものがありますか?私は甥にプログラムを教えています、そして彼はメインの前にwhileループを入れようとしていました。彼はかなり若いので、私は彼に理解できる難しい単純なルールを与えたいと思います。

4

5 に答える 5

2

完全ではありません-グローバル変数宣言に式を入れることもできます:

int myGlobalVar = 3 + SomeFunction(4) - anotherGlobalVar;

ただし、ここに配置できるのは、グローバルを初期化する値に評価する必要がある式のみです。完全なステートメントを配置することはできません(コードのブロック、ifステートメント、ループなどはありません)。このコードは実行される前に実行されるmain()ため、ここで行うことに注意してください。避けられない場合を除いて、グローバル初期化子で関数を呼び出さないことをお勧めします。

于 2010-10-28T16:57:46.970 に答える
1
  • あなたの甥のために:
    いいえ、あなたはそれをすることはできません。
  • あなた自身のために:
    コンパイラーの入力は、技術的にはプリプロセッサーの実行後に得られるものです。それでは、プリプロセッサは省略しましょう。それが機能した後、宣言のシーケンスであるC++プログラムを取得します。一部の削除は定義である場合もあり、一部の定義(関数定義など)にはステートメントが含まれている場合があります。
    HTH
于 2010-10-28T16:59:39.733 に答える
0

はい、何かを行うすべての種類のステートメントは、それを使用できるコンテキスト内に存在する必要があります(これは変数の初期化には適用されません)。

これは、C ++が構造化プログラミング言語であり、コードのレベルが1つだけでスコープがない非構造化プログラミング言語とは対照的に、プロシージャ内でその動作を囲むためです。

于 2010-10-28T16:59:01.180 に答える
0

はい-関数の外にランダムな実行可能コードを貼り付けることはできません。

于 2010-10-28T16:54:20.103 に答える
0

ええと、名前空間があります...そしてAdamRosenfieldが言及したもの...そして関数の外部のようなものである可能性のある例外try/catchもあります。残念ながら、私は構文を思い出せず、グーグルでそれを見つけることができません。

于 2010-10-28T17:05:28.530 に答える