本文共 693 字,大约阅读时间需要 2 分钟。
来自Cai-san 出的一道公司的面试题目, 以后向Cai-san 学习的机会比较少了, 可惜啊
在运行时,我们可以用
#define PAD_SIZE(s) (((s)+3)&~3) PAD_SIZE(sizeof(T)) == sizeof(T) 判断一个数据类型是否没有被编译器填充数据。 那么编译时如何做? 答案是 // --------------------------------------------------------------------------- COMPILE_TIME_ASSERT_FUNCTION_SCOPE(PAD_SIZE(sizeof(T)) == sizeof(T)); template<bool> struct CompileTimeAssert; template<> struct CompileTimeAssert<true> {}; #define COMPILE_TIME_ASSERT(_exp) / template class CompileTimeAssert< (_exp) >; #define COMPILE_TIME_ASSERT_FUNCTION_SCOPE(_exp) / CompileTimeAssert<( _exp )>(); // --------------------------------------------------------------------------- 这个代码在Android里的 frameworks/base/include/utils/Debug.h中。转载地址:http://xhmvi.baihongyu.com/