Saturday, June 13, 2009

#if sizeof 怎麼用

有時候會想要在comipler time時,
確認某個struct大小沒有超過預設值,
這時候就會想說可不可以這樣寫
#if sizeof(xxx)<=32
balabala
#endif
很不幸地, preprocessor不支援
(可能這個時候還不知道這個結構吧)

google了下找到一個方法

char dummy[1-2*(sizeof(xxx)>=32)];

在comipler time時, 做變數大小的檢查
如果超過預定的大小, compiler就會停下來
這時候我們就知道出事了
沒超過的話, 我們就會有一個用不到的1-byte dummy變數
但至少可能確認程式應該可以在我們的假設內執行

No comments: