在C++标准中,我可以在哪里找到对全局范围内调用函数的支持

Where in the C++ Standard can I find support for invoking a function in global scope?

本文关键字:范围内 全局 调用 函数 支持 标准 C++ 在哪里 我可以      更新时间:2023-10-16

考虑下面的片段:

#include <iostream>
int f(int i) {
    return ++i;
}
int i = f(i);
int main() {
    std::cout << i << 'n';
}

在C++标准中,我在哪里可以找到对上述全局变量i初始化的支持?

非局部变量的初始化在标题为"非局部变量初始化"的一章[basic.start.init]中进行了描述。在C++11中,这是3.6.2。

使用=初始化时,初始化程序可以是一个支持列表,也可以是任何赋值表达式,包括函数调用,如[dcl.init](C++11 8.5)中所述

这具有静态存储持续时间,因此根据3.6.2/2:在静态初始化期间首次初始化零

具有静态存储持续时间[…]的变量应初始化为零在进行任何其他初始化之前。

然后在动态初始化过程中从其初始化程序对其进行初始化,因为它不符合常量初始化的标准(因为初始化程序不是常量表达式)。它将静态初始化的零值传递给函数,函数将其递增并返回1。该值1用于完成初始化。