最近在看chrome的代码,发现了有个叫COMPILE_ASSERT的宏,用于编译时做判断。COMPILE_ASSERT宏的实现在D:/project/chrome/src/src/base/basictypes.h ,注释部分有其原理的介绍,如下:
// The COMPILE_ASSERT macro can be used to verify that a compile time // expression is true. For example, you could use it to verify the // size of a static array: // // COMPILE_ASSERT(ARRAYSIZE_UNSAFE(content_type_names) == CONTENT_NUM_TYPES, // content_type_names_incorrect_size); // // or to make sure a struct is smaller than a certain size: //