我目前正在更新一些代码,我遇到了一个地方,代码假设 time_t
变量的大小与 signed long
相同.此代码适用于我们以前的平台(显然在 Coldfire 上确实如此),但我们正在迁移到新平台。
现在我知道我们不应该对 time_t
变量的大小做出假设,因为它是 not well defined.但我真的目前不想重写基于此假设工作的所有代码行。
理想情况下,我想做类似的事情:
#if sizeof(time_t) != sizeof(LONG)
#error size assertion failed
#endif
一次就搞定了。我知道 sizeof()
不能在这样的条件预处理器中使用,所以这是不可能的。
所以我想知道,有没有什么方法可以知道 time_t
将占用的字节数,以便它可以用于预处理条件?
最佳答案
如果你在编译时失败,那么就做这样的事情
{
char s1[+sizeof(time_t) - sizeof(LONG) + 1];
char s2[-sizeof(time_t) + sizeof(LONG) + 1];
}
如果尺寸不同,将无法构建。
您可以将其放入宏中,但错误会相当隐蔽。
关于c - 有没有办法在预处理条件中使用 sizeof ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17217531/