コード (C++ ソース ファイルのグローバル スコープでアセンブリ命令にコンパイルするコード) を使用することは合法ですか? 以前は、Ch プログラミング言語(C/C++ のインタープリター) を除いて、コードをコードに含めることはできないという印象を受けていました。 C++ プログラムのグローバル スコープ コード/命令は、関数の本体内にのみ存在できます [ピリオド]!
しかし、C++ では、関数をグローバル変数に代入することで、メイン関数の前に関数を呼び出すことができることがわかりました。これにはcall
、アセンブリ コード内の命令が含まれます。また、アセンブリ コードの外で、2 つの変数の合計を別のグローバル変数に割り当てることもできます。これにはほぼ確実にadd
andmov
命令が含まれます。そして、そのコードが関数の外のグローバル スコープにある場合、いつ実行されるのでしょうか? がクラス型のオーバーロードされた演算子である場合、その+
中に print ステートメントがある場合、それはいつ実行されますか?
また、C++ プログラムのグローバル スコープにループと制御構造を含めることはできますか? もしそうなら、それらはいつ実行されますか? 他のプログラム構造についてはどうですか? それらはグローバル スコープで許可されていますか? また、どのような状況で、いつ実行されますか?
この質問は、私が投稿した以前の質問への回答です: Why can't I assign values to global variables outside a function in C?
元の質問に対する回答者は、関数の範囲外にコードを含めることはできないと主張しています。私はこれに関するルールを完全には理解していないと思います。正確には何が「コード」であるかどうかを理解していません。
int foo() {
cout << "Inside foo()" << endl;
return 5;
}
// is this not code?
int global_variable = foo();
// How does this statement work without generating code?
int a = 4;
int b = 5;
int c = a + b;
int main() {
// The program behaves as if the statements above were executed from
// top to bottom before entering the main() function.
cout << "Inside main()" << endl;
cout << "int c = " << c << endl;
return 0;
}