我目前正在更新一些代碼,我碰到一個代碼對time_t
變量與signed long
相同的大小進行了假設。這段代碼適用於我們以前的平臺(顯然在Coldfire上是如此),但我們正在轉向一個新的平臺。有沒有在預處理條件中使用sizeof的方法?
現在我知道,我們不應該對一個time_t
變量的大小來做出假設,因爲這是not well defined.但我真的不想改寫它的工作基於這個假設此刻的所有代碼行。
理想我想這樣做:
#if sizeof(time_t) != sizeof(LONG)
#error size assertion failed
#endif
一次,並用它做。我知道sizeof()
不能用於像這樣的條件預處理器,所以它是不可能的。
所以我想知道,有沒有什麼辦法可以知道一個time_t
將採取的字節數,以便它可以用於預處理條件?
請參閱http://stackoverflow.com/questions/4079243/how-can-i-use-sizeof-in-a-preprocessor-macro和http://www.pixelbeat.org/programming/gcc/static_assert。來自comp.lang.c faq的html – devnull
[sizeof in define](http://c-faq.com/cpp/ifsizeof.ct.html)。 – devnull