我們知道,sizeof是在編譯期就完成了計算,在運行時已經(jīng)是一個常數(shù)值了。那sizeof能用在類似于#if這樣的指令中嗎?
答案一般是不行。
關(guān)于預(yù)編譯條件MSDN明確寫著: The expression cannot use sizeof or a type-cast operator.
其實,像#include,#if,#define等等這樣的是在預(yù)處理過程就完成了包含和替換,所以他們是預(yù)處理指令。而此時還沒有到編譯期,還沒有類型名稱分析,sizeof也就不能用。
編譯期完成的工作除了sizeof以外,我們還關(guān)注的就是模板的具現(xiàn)等。