我想連接使用宏兩個寬字符串,所以我定義了一些宏:如何使用C中的宏連接兩個寬字符串?
#define VERSION_MAJOR 1
#define VERSION_MINOR 1
#define VERSION_BUILD 0
#define VERSION_REVISION 0
#define _STR(s) #s
#define STR(s) _STR(s)
#define _TOWSTRING(x) L##x
#define TOWSTRING(x) _TOWSTRING(x)
//http://stackoverflow.com/questions/240353/convert-a-preprocessor-token-to-a-string
#define PRODUCT_ELASTOS_VERSION STR(VERSION_MAJOR) "." \
STR(VERSION_MINOR) "." \
STR(VERSION_BUILD) "." \
STR(VERSION_REVISION)
現在我想用宏觀PRODUCT_ELASTOS_VERSION定義一個新的宏PRODUCT_ELASTOS_VERSION_W,它的值應該是L「1.1.0.0」。那我該如何定義這個宏呢? TOWSTRING(PRODUCT_ELASTOS_VERSION)是錯誤的答案。
如果我想連接字符串,應該如何寫? L「v」TOWSTRING(PRODUCT_ELASTOS_VERSION)無法獲得寬字符串L「v1.1.0.0」。
請注意,在標識符的開頭處後面跟着大寫字母「_」是一個保留字(可以是C++ onl不過,我不確定)。您可以將'_'放在末尾,就像'STR_'和'TOWSTRING_'一樣。 – Shahbaz 2012-03-01 23:43:30
另外,BUILD之後不應該REVISION?關於保持構建計數,看看[這裏](http://stackoverflow.com/questions/7713459/how-do-you-track-the-build-count-of-your-library-when-there-are (或者你可能有更好的主意!) – Shahbaz 2012-03-01 23:44:41