#if的用法,该怎么处理

#if的用法
想写段代码,在time_t为四个字节时做一个操作,在为8个字节时做另一个操作

代码如下,编译不过 
提示fatal error C1017: 无效的整数常量表达式

C/C++ code

inline time64_t chg_time_t(time_t *now)
{

#if (sizeof (time_t) == 4)
         return *now;
#else
    //将now转成64位
#endif
}


不知道怎么改 我看别人类似这样的代码能编译过的

http://www.goodsoft.cn/blog/post/Preprocessor.html

------解决方案--------------------
这通过预处理是做不到的。因为sizeof是一个关键字,用于编译期计算time_t的大小,这不是常量,无法用在预处理表达式里。
------解决方案--------------------
在编译开始的时候编译器调用预处理器处理那些预处理指令比如#if。sizeof是操作符,只有编译器认识,在预处理期间预处理器不认识sizeof这家伙,所以就发疯了
------解决方案--------------------
C/C++ code

struct size4 { };
struct sizenot4 { };

template <int s>
struct Size
{
    typedef sizenot4 size_type;
};

template <>
struct Size<4>
{
    typedef size4 size_type;
};

time64_t do_chg_time_t(time_t *now, size4)
{
    return *now;
}

time64_t do_chg_time_t(time_t *now, sizenot4)
{
    // do something or ...
    return time64_t();
}

time64_t chg_time_t(time_t *now)
{
    return do_chg_time_t(now, Size<sizeof(time_t)>::size_type());
}