让我们假设我有一个结构:
struct A {
uint16_t a;
uint64_t b;
};
Run Code Online (Sandbox Code Playgroud)
有没有办法获得A w/o填充的大小?ie:所有成员的sizeof总和(即使它不是递归的).
通常sizeof(A) == 16.
我想__GCC_sizeof__(A) == 10.
我希望它在测试代码中不影响实际代码,这意味着在结构定义中没有"#pragma"s和no "__attribute__".(虽然它可以完成#ifdef TEST,但它非常难看).
它不必是便携式的,GCC足够了.
谢谢!
事实证明,我原本想要的可能不可能不涉及C++ 11我想稍微改变一下要求并问你是否可以实现这一点.
基本上我想在一个类继承自"interface"时检查编译时间.通过接口我的意思是仅使用纯虚方法的类.我想做以下代码:
template <typename T>
class Impl : public T {
public:
STATIC_ASSERT_INTERFACE(T);
};
Run Code Online (Sandbox Code Playgroud)
这里的行为是,如果T只有纯虚方法,那么它将编译,如果其中一个方法不是那么失败.
任何人都可以想到这样的事情吗?