0
我已經閱讀了很多有關宏化的字符串,但我顯然不太明白。我想創建一個字符串,其中需要首先評估宏的參數。有人可以解釋我的錯在哪裏,或者如何更好地做到這一點?C方程的結果的字符串化的結果
#define SDDISK 2 // Note defined in a library file elsewhere ie not a constant I know)
#define DRIVE_STR(d) #d ":/"
#define xDRIVE_STR(x) DRIVE_STR(x)
#define FILEPATH(f) xDRIVE_STR(SDDISK + '0') #f
const char file[] = FILEPATH(test.log);
void main(void)
{
DebugPrint(file);
}
輸出是: 「2 + 0」:/ test.log中「,
但我想 」2:/test.log「
[只需放下'+'0'](http://ideone.com/n9UBZP)。 – Cornstalks
爲什麼如果你不想要的話就把'0'放進去? –
宏由預處理器擴展。預處理器也可以進行字符串化。之後,當編譯器看到代碼時,'2'將已經在雙引號內。因此,不需要將「0」添加到「2」以將其轉換爲字符「2」。 –