最近在做64位程序的移植,发现结构体,自定义类型大小是个问题。各模块必须要保证结构体大小
一致,这样运行时才不会出现莫名其妙的问题。
后来想到boost库提供了静态类型检查的功能。#include <boost/static_assert.hpp>即可。
提供一个公共函数,供所有模块使用。
static void check_size()
{
BOOST_STATIC_ASSERT(sizeof(int ) == 4); //always ok
BOOST_STATIC_ASSERT(sizeof(long) == 8); // 64bit , ok ; 32bit error
BOOST_STATIC_ASSERT(sizeof(PARAM) == 4); //self defined ,error
}
思想:C++的模板元编程。