【发布时间】:2012-02-01 16:21:19
【问题描述】:
g++ 允许 可变长度数组 (VLA) 作为扩展。 sizeof 运算符在 VLA 上的结果很有趣:
int main ()
{
char size = 20, a[10], b[size];
cout<<"sizeof(a) = "<<sizeof(a)<<endl; // sizeof(a) = 10, (can be used as template param)
cout<<"sizeof(b) = "<<sizeof(b)<<endl; // sizeof(b) = 20 !! (can't used be as template param)
}
如果是sizeof(b),g++ 是否不遵循仅在编译时评估sizeof 的标准?是sizeofoverloaded吗?
【问题讨论】:
-
括号不是运算符名称的一部分。这是
sizeof,不是sizeof()。
标签: c++ gcc sizeof variable-length-array