【发布时间】:2011-06-13 23:05:50
【问题描述】:
下面的代码合法吗?
int add(int a, int b)
{
return a + b;
}
int myvar = add(1, 2);
int main() { /* ... */ }
为什么,或者为什么不?
【问题讨论】:
下面的代码合法吗?
int add(int a, int b)
{
return a + b;
}
int myvar = add(1, 2);
int main() { /* ... */ }
为什么,或者为什么不?
【问题讨论】:
静态初始化器可以调用函数,只要它们在作用域内。
[dcl.decl](2003 年措辞,8/2):
也可以指定初始值 在声明器中;初始化器是 在 8.5 和 12.6 中讨论。
[dcl.init](2003 年措辞,8.5/2):
自动、注册、静态和 命名空间范围的外部变量 可以任意初始化 涉及文字的表达式和 先前声明的变量和 功能。
(不要被缺少 static 关键字所误导,它具有各种含义。您的变量 myvar 在命名空间范围内声明,因此具有静态存储持续时间 .)
【讨论】: