宣言、定義、およびプリプロセッサディレクティブを除いて、関数の外部にコードを含めることはできません。
その声明は正確ですか、それとも私が見逃しているものがありますか?私は甥にプログラムを教えています、そして彼はメインの前にwhileループを入れようとしていました。彼はかなり若いので、私は彼に理解できる難しい単純なルールを与えたいと思います。
完全ではありません-グローバル変数宣言に式を入れることもできます:
int myGlobalVar = 3 + SomeFunction(4) - anotherGlobalVar;
ただし、ここに配置できるのは、グローバルを初期化する値に評価する必要がある式のみです。完全なステートメントを配置することはできません(コードのブロック、if
ステートメント、ループなどはありません)。このコードは実行される前に実行されるmain()
ため、ここで行うことに注意してください。避けられない場合を除いて、グローバル初期化子で関数を呼び出さないことをお勧めします。
はい、何かを行うすべての種類のステートメントは、それを使用できるコンテキスト内に存在する必要があります(これは変数の初期化には適用されません)。
これは、C ++が構造化プログラミング言語であり、コードのレベルが1つだけでスコープがない非構造化プログラミング言語とは対照的に、プロシージャ内でその動作を囲むためです。
はい-関数の外にランダムな実行可能コードを貼り付けることはできません。
ええと、名前空間があります...そしてAdamRosenfieldが言及したもの...そして関数の外部のようなものである可能性のある例外try/catchもあります。残念ながら、私は構文を思い出せず、グーグルでそれを見つけることができません。