gre*_*rep 131
如果您确实需要在编译器输出中获取sizeof(X),则可以将其用作不完整模板类型的参数:
template<int s> struct Wow;
struct foo {
int a,b;
};
Wow<sizeof(foo)> wow;
$ g++ -c test.cpp
test.cpp:5: error: aggregate ‘Wow<8> wow’ has incomplete type and cannot be defined
Run Code Online (Sandbox Code Playgroud)
小智 13
要回答更新的问题 - 这可能有点过分,但它会在编译时打印出类的大小.Visual C++编译器中有一个未记录的命令行开关,它将显示类的完整布局,包括它们的大小:
该开关是/ d1reportSingleClassLayoutXXX,其中XXX对类名执行子串匹配.
另一个简单代码的技巧:
int dummy;
switch (dummy) {
case sizeof(dummy):
case sizeof(dummy):
break;
}
Run Code Online (Sandbox Code Playgroud)
------构建开始:项目:cpptest,配置:调试Win32 ------> cpptest.cpp c:\ work\cpptest\cpptest\cpptest.cpp(33):错误C2196:案例值'4 ' 已被占用
==========构建:0成功,1失败,0最新,0跳过==========
编辑:dummy上面是切换条件的一些积分变量,以满足所需的语法.使用sizeof(X)的情况下,不断:
这也适用于C代码.
struct X {
int a,b;
int c[10];
};
int _tmain(int argc, _TCHAR* argv[])
{
int dummy;
switch (dummy) {
case sizeof(X):
case sizeof(X):
break;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
------构建开始:项目:cpptest,配置:调试Win32 ------ cpptest.cpp c:\ work\cpptest\cpptest\cpptest.cpp(29):错误C2196:大小写值'48'已经使用==========构建:0成功,1失败,0最新,0跳过==========