我目前正在更新一些代码,但我遇到了一个代码,假设time_t
变量的大小与signed long
相同。这段代码适用于我们以前的平台(显然在Coldfire上是真的),但我们正在转向一个新的平台。
现在我知道我们不应该对time_t
变量的大小做出假设,因为那是not well defined.但我真的不想重写所有的目前基于此假设工作的代码行。
理想情况下,我想做类似的事情:
#if sizeof(time_t) != sizeof(LONG)
#error size assertion failed
#endif
一次完成它。我知道sizeof()
不能在像这样的条件预处理器中使用,所以它是不可能的。
所以我想知道,有没有什么方法可以知道time_t
将采用的字节数,以便它可以在预处理条件中使用?
答案 0 :(得分:3)
如果您遇到编译时故障,那么就这样做
{
char s1[+sizeof(time_t) - sizeof(LONG) + 1];
char s2[-sizeof(time_t) + sizeof(LONG) + 1];
}
如果尺寸不同,将无法构建。
你可以将它放入宏中,但错误会相当神秘。