AFAIK, sizeof
不应该回来 0
,但以下程序:
#include <iostream>
class A {
public:
int a[0];
};
int main() {
A obj;
std::cout << sizeof(obj) << std::endl;
}
输出 0
。为什么?
AFAIK, sizeof
不应该回来 0
,但以下程序:
#include <iostream>
class A {
public:
int a[0];
};
int main() {
A obj;
std::cout << sizeof(obj) << std::endl;
}
输出 0
。为什么?
C ++不允许零大小的数组。符合标准的编译器拒绝代码,例如:
$ g++-4.8 -pedantic-errors main.cpp
main.cpp:5:14: error: ISO C++ forbids zero-size array 'a' [-Wpedantic]
int a[0];
^
所以的行为 sizeof
这根本不相关。 GCC允许它(没有 -pedantic
) 作为一个 编译器扩展。