Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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
C++ 默认情况下,全局变量是外部变量,还是等同于在全局中用外部变量声明变量?_C++_C_Static_Global_Extern - Fatal编程技术网

C++ 默认情况下,全局变量是外部变量,还是等同于在全局中用外部变量声明变量?

C++ 默认情况下,全局变量是外部变量,还是等同于在全局中用外部变量声明变量?,c++,c,static,global,extern,C++,C,Static,Global,Extern,我已经回答了以下两个问题: 这两个问题以不同的方式说明了这两件事 问题1的答复: 全局变量在C和C++中不被外部或静态默认。 问题2的答复: 如果未指定存储类(即extern或static关键字),则默认情况下全局变量具有外部链接 我需要知道以下几点: 全局变量是否默认为链接中的extern(或者)它是否等同于通过指定extern存储类来声明变量 默认情况下,全局变量是静态的吗?它是否等同于通过指定静态存储类来声明变量 与C或C++有什么区别吗?谁能澄清一下吗 全局变量是否默认为链接中的ex

我已经回答了以下两个问题:

这两个问题以不同的方式说明了这两件事

问题1的答复:

全局变量在C和C++中不被外部或静态默认。

问题2的答复:

如果未指定存储类(即extern或static关键字),则默认情况下全局变量具有外部链接

我需要知道以下几点:

  • 全局变量是否默认为链接中的
    extern
    (或者)它是否等同于通过指定
    extern
    存储类来声明变量
  • 默认情况下,全局变量
    是静态的
    吗?它是否等同于通过指定
    静态
    存储类来声明变量
  • C
    C++
    有什么区别吗?谁能澄清一下吗
  • 全局变量是否默认为链接中的
    extern
    (或者)它等同于通过指定
    extern
    存储类来声明变量

    在最外层,在任何块之外声明的变量的默认存储持续时间、范围和链接具有
    静态
    存储持续时间、文件范围和
    外部
    链接。C11标准规定:

    6.2.1标识符范围(p4): […]如果声明标识符的声明符或类型说明符出现在任何块或参数列表之外,该标识符具有文件作用域,该文件作用域在翻译单元末尾终止。[……]

    6.2.2标识符的关联(p5): […]如果对象标识符的声明具有文件作用域且没有存储类说明符,则其链接为
    external

    6.2.4物品的储存期限(p3): 在没有存储类说明符的情况下声明其标识符的对象
    \u Thread\u local
    ,具有外部或内部链接或存储类说明符
    static
    ,具有静态存储持续时间

    因此,如果
    x
    是全局的

    int x;
    
    则其存储时间、范围和链接相当于中的
    x

    extern int x;   
    
    全局变量在作用域中是否默认为
    静态
    (或者)它等同于通过指定
    静态
    存储类来声明变量

    不。正如我上面所说的,它的持续时间是静态的,并且它有文件范围

    如果有任何C或C++差异请澄清?< /P> 没有区别。这两种语言的规则是相同的

    全局变量是否默认为链接中的
    extern
    (或者)它等同于通过指定
    extern
    存储类来声明变量

    在最外层,在任何块之外声明的变量的默认存储持续时间、范围和链接具有
    静态
    存储持续时间、文件范围和
    外部
    链接。C11标准规定:

    6.2.1标识符范围(p4): […]如果声明标识符的声明符或类型说明符出现在任何块或参数列表之外,该标识符具有文件作用域,该文件作用域在翻译单元末尾终止。[……]

    6.2.2标识符的关联(p5): […]如果对象标识符的声明具有文件作用域且没有存储类说明符,则其链接为
    external

    6.2.4物品的储存期限(p3): 在没有存储类说明符的情况下声明其标识符的对象
    \u Thread\u local
    ,具有外部或内部链接或存储类说明符
    static
    ,具有静态存储持续时间

    因此,如果
    x
    是全局的

    int x;
    
    则其存储时间、范围和链接相当于中的
    x

    extern int x;   
    
    全局变量在作用域中是否默认为
    静态
    (或者)它等同于通过指定
    静态
    存储类来声明变量

    不。正如我上面所说的,它的持续时间是静态的,并且它有文件范围

    如果有任何C或C++差异请澄清?< /P> 没有区别。这两种语言的规则是相同的

    全局变量在链接中是否默认为外部变量(或者)它等效于通过指定外部存储类声明变量

    除非另有说明,否则它们具有外部链接(C++除外,如果它们是常数,则它们具有内部链接)。 您链接到的第一个答案是,它不等同于声明它

    extern
    (这使它成为一个纯粹的声明,而不是定义);并不是说它没有外部链接

    全局变量在作用域中默认是静态的(或者)它等同于通过指定静态存储类来声明变量

    <>在C++中,它们有内部链接(如声明为代码>静态<代码>),如果它们是常数,则外部链接。在C中,它们总是有外部链接

    如果有任何C或C++差异请澄清?< /P>

    以上,默认为C中的外部链接,而C++中则为常量变量。 全局变量在链接中是否默认为外部变量(或者)它等效于通过指定外部存储类声明变量

    除非另有说明,否则它们具有外部链接(C++除外,如果它们是常数,则它们具有内部链接)。 您链接到的第一个答案是,它不等同于声明它

    extern
    (这使它成为一个纯粹的声明,而不是定义);并不是说它没有外部链接

    全局变量在作用域中默认是静态的(或者)它等同于通过指定静态存储类来声明变量

    <>在C++中,它们有内部链接(如声明为代码>静态<代码>),如果它们是常数,则外部链接。在C中,它们总是有外部lin