Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can C++;在全局范围内有代码吗? 在C++源文件的全局范围内编译代码是否有合法性?(以前),我认为除了C++(C++的解释器)之外,在C++程序的全局范围内不能有代码。代码/指令只能在函数[周期]的正文中。 但是,我发现你可以在C++中的主函数之前调用函数,把它们分配给全局变量!这将涉及汇编代码中的调用< /代码>指令,也可以将两个变量的和分配到汇编代码之外的另一个全局变量中,这几乎肯定涉及 AD/code>和mov指令。如果该代码在全局范围内,在任何函数之外,它将何时执行?如果+是类类型的重载运算符,如果它内部有一个print语句,它将何时执行 也可以在C++程序的全局范围内有循环和控制结构,如果是,那么它们是什么时候执行的?对于其他程序构造,它们是否允许在全局范围内,在什么情况下,何时执行?< /P>_C++_Startup_Machine Instruction - Fatal编程技术网

Can C++;在全局范围内有代码吗? 在C++源文件的全局范围内编译代码是否有合法性?(以前),我认为除了C++(C++的解释器)之外,在C++程序的全局范围内不能有代码。代码/指令只能在函数[周期]的正文中。 但是,我发现你可以在C++中的主函数之前调用函数,把它们分配给全局变量!这将涉及汇编代码中的调用< /代码>指令,也可以将两个变量的和分配到汇编代码之外的另一个全局变量中,这几乎肯定涉及 AD/code>和mov指令。如果该代码在全局范围内,在任何函数之外,它将何时执行?如果+是类类型的重载运算符,如果它内部有一个print语句,它将何时执行 也可以在C++程序的全局范围内有循环和控制结构,如果是,那么它们是什么时候执行的?对于其他程序构造,它们是否允许在全局范围内,在什么情况下,何时执行?< /P>

Can C++;在全局范围内有代码吗? 在C++源文件的全局范围内编译代码是否有合法性?(以前),我认为除了C++(C++的解释器)之外,在C++程序的全局范围内不能有代码。代码/指令只能在函数[周期]的正文中。 但是,我发现你可以在C++中的主函数之前调用函数,把它们分配给全局变量!这将涉及汇编代码中的调用< /代码>指令,也可以将两个变量的和分配到汇编代码之外的另一个全局变量中,这几乎肯定涉及 AD/code>和mov指令。如果该代码在全局范围内,在任何函数之外,它将何时执行?如果+是类类型的重载运算符,如果它内部有一个print语句,它将何时执行 也可以在C++程序的全局范围内有循环和控制结构,如果是,那么它们是什么时候执行的?对于其他程序构造,它们是否允许在全局范围内,在什么情况下,何时执行?< /P>,c++,startup,machine-instruction,C++,Startup,Machine Instruction,这个问题是对我之前发布的一个问题的回应: 原始问题的回答者断言,您不能将代码置于函数范围之外。我认为我不完全理解这方面的规则,以及到底什么是“代码”或什么不是 intfoo(){ Cuth你链接到的问题的答案是用简单的方式进行,而不是使用严格的C++命名结构。 P>更迂腐,C++没有“代码”。C++有声明、定义和语句。语句是你可能认为的“代码”:如果, < /code >,表达式, 只有声明和定义可以出现在全局范围中。当然,定义可以包括表达式。int a=5;定义一个全局变量,由表达式初始化

这个问题是对我之前发布的一个问题的回应:

原始问题的回答者断言,您不能将代码置于函数范围之外。我认为我不完全理解这方面的规则,以及到底什么是“代码”或什么不是

intfoo(){

Cuth

你链接到的问题的答案是用简单的方式进行,而不是使用严格的C++命名结构。 <> P>更迂腐,C++没有“代码”。C++有声明、定义和语句。语句是你可能认为的“代码”:<代码>如果,<代码> < /code >,表达式,

只有声明和定义可以出现在全局范围中。当然,定义可以包括表达式。
int a=5;
定义一个全局变量,由表达式初始化

但是不能在全局范围内有一个随机语句/表达式,比如
a=5;
。也就是说,表达式可以是定义的一部分,但表达式不是定义

当然,您可以在
main
之前调用函数。全局变量构造函数和初始值设定项过于复杂,无法在编译时执行,必须在
main
之前运行。例如:

int b = []()
{
    std::cout << "Enter a number.\n";
    int temp;
    std::cin >> temp;
    return temp;
}();
int b=[]()
{
标准:温度>温度;
返回温度;
}();
<>编译器不能在编译时完成这一操作,C++要求所有的全局变量在主< /C>开始之前初始化。编译器必须调用代码预编码>主< /代码>。这是完全合法的。< /P>

每个C++编译和执行系统都有一些机制,用于在代码>主代码< /代码>之前和之后调用代码。全局必须初始化,并且可能需要调用对象构造函数来完成初始化。在代码>主< /代码>完成之后,全局变量必须被销毁,这意味着需要析构函数。EUDO汇编代码:<代码> MOV 4,一个< /COD>将值4移动到内存中的任何地方。不能在赋值函数、循环、I/O之外,在函数之外有C++代码。这并不意味着编译器不能在函数之外生成机器代码,正如您的注释所证明的。所有代码都在函数外运行。n将被编译器放置在一个特殊的无形启动函数中。作用域是C++的东西,程序集不是。

int b = []()
{
    std::cout << "Enter a number.\n";
    int temp;
    std::cin >> temp;
    return temp;
}();