c++ static assert

2014-11-24 03:15:36 · 作者: · 浏览: 0

最近在做64位程序的移植,发现结构体,自定义类型大小是个问题。各模块必须要保证结构体大小

一致,这样运行时才不会出现莫名其妙的问题。

后来想到boost库提供了静态类型检查的功能。#include 即可。

提供一个公共函数,供所有模块使用。

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++的模板元编程