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