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