Re: [問題] 能不能用macro做到這件事

看板C_and_CPP作者 (晰晰)時間15年前 (2010/05/17 23:12), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《loveflames (咕啾咕啾魔法陣)》之銘言: : 其實是為了嘗試不用template在編譯期算出1+...+10 : 差在不能取之前定義的值 以下提供一種解法 不知道是否符合需求 可利用 __INCLUDE_LEVEL__ 這個macro 取得目前include深度 不過這個是 gnu c 的preprocessor限定 但其他的preprocessor可能也會有類似的東西可以用 //precomp.h #if __INCLUDE_LEVEL__ <= TERMINAL_CONDITION +__INCLUDE_LEVEL__ #include __FILE__ #endif //test.cpp #include <cstdio> int main() { #define TERMINAL_CONDITION 100 int v = ( #include "precomp.h" ); #undef TERMINAL_CONDITION std::printf("OUTPUT = %d\n", v); return 0; } //OUTPUT OUTPUT = 5050 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.122.237 ※ 編輯: acrt3820 來自: 140.113.122.237 (05/17 23:15)

05/17 23:19, , 1F
好帥的方法XD
05/17 23:19, 1F
文章代碼(AID): #1ByLp1Rv (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1ByLp1Rv (C_and_CPP)