以下節錄一段icu unicode lib的文件裡的sample
#ifndef U_CHARSET_IS_UTF8 # define U_CHARSET_IS_UTF8 0 #endif
理論上,這類的macro會定義在header file,
而一般header file都會有include guard,所以不會重複include
那為什麼要在U_CHARSET_IS_UTF8再檢查一次是否定義過呢?
主要的原因是發生了不在此header定義了這個macro
可能來自於其他header,也可能來自於compiler參數
例如
g++ … -DU_CHARSET_IS_UTF8=1
這樣就可以透過makefile來做一些動態的macro值改變的處理