在C++标准中,我可以在哪里找到对全局范围内调用函数的支持
Where in the C++ Standard can I find support for invoking a function in global scope?
考虑下面的片段:
#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用于完成初始化。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- C++可以在全局范围内拥有代码吗?
- 哪个函数负责C++全局范围内的类对象初始化?
- 如何将不在 QT 全局范围内的函数附加到 Qwidget 上
- 如何处理警告 C4177:#pragma 'float_control' 只能在全局范围或命名空间范围内使用
- 全局范围内的对象会导致程序退出时崩溃
- 困惑,为什么没有在此范围内声明 c++ 全局变量
- 通过使用全局变量的函数访问在给定范围内被覆盖的变量
- 如何全局创建对象并使用该对象访问全局范围内的公共成员函数
- 有没有一种标准方法来确保一段代码在全局范围内执行
- 全局范围内的智能指针
- c++在函数中创建对象的数组需要在全局范围内使用该数组
- 全局范围内的标识符限制
- 如何访问本地范围内的全局变量
- 在C++标准中,我可以在哪里找到对全局范围内调用函数的支持
- 如何检查函数是否在编译时在全局范围内声明
- 模板类的方法使用全局范围内的 typedef.编译器错误
- 全局定义和范围内定义的区别
- 为什么我无法在全局范围内访问我的数组下标
- 为什么我不能在 C++ 中在全局范围内单独声明和定义变量