有代码(在 C++ 源文件的全局范围内编译为汇编指令)是否合法?以前,我的印象是除了Ch 编程语言(C/C++ 的解释器)之外,你不能有代码C++ 程序的全局范围。代码/指令只能在函数体内 [句号]!
但是,我发现您可以通过将函数分配给全局变量来调用 C++ 中的 main 函数之前的函数!这将涉及call
汇编代码中的指令。您还可以将两个变量的总和分配给汇编代码之外的另一个全局变量。这几乎肯定会涉及到add
和mov
指令。如果该代码在全局范围内,在任何函数之外,它什么时候执行?如果+
是一个类类型的重载运算符,如果它里面有一个 print 语句,它什么时候执行?
您还可以在 C++ 程序的全局范围内拥有循环和控制结构,如果是,它们何时执行?对于其他程序构造,它们是否允许在全局范围内,在什么情况下以及何时执行?
这个问题是对我之前发布的问题的回应: 为什么我不能在 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;
}