【发布时间】:2023-03-05 03:53:01
【问题描述】:
我想知道一个类的大小限制是多少。我做了一个简单的测试:
#define CLS(name,other) \
class name\
{\
public: \
name() {};\
other a;\
other b;\
other c;\
other d;\
other e;\
other f;\
other g;\
other h;\
other i;\
other j;\
other k;\
};
class A{
int k;
public:
A(){};
};
CLS(B,A);
CLS(C,B);
CLS(D,C);
CLS(E,D);
CLS(F,E);
CLS(G,F);
CLS(H,G);
CLS(I,H);
CLS(J,I);
编译失败
"'J' : 类太大"
如果我删除最后的声明 - CLS(J,I);,一切都会正常编译。
这是编译器强加的限制,还是标准中的某个地方?
【问题讨论】:
-
使用最后一个定义,J 类大约达到 10 GB(取决于填充)。
-
我只是声明它,并没有实际使用它。我敢打赌声明一些 H 类的数组会破坏运行时:)