我需要將枚舉成員(其值,而不是標識符)轉換爲字符串。 我已經嘗試了以下,它適用於MACRO(TYPE_A),但不適用於枚舉值(typeA)。這在我看來有點奇怪。枚舉成員上的字符串化
你有什麼想法如何做到這一點?
#define _tostr(a) #a
#define tostr(a) _tostr(a)
typedef enum _SPECIAL_FOLDER_ID {
typeA = 3,
typeB = 4,
} SPECIAL_FOLDER_ID;
#define TYPE_A 3
int main() {
//this is working, but the information is a macro (TYPE_A)
printf("The string is " tostr(TYPE_A) ".\n");
//this is not working for typeA (defined in an enumeration)
printf("The string is " tostr(typeA) ".\n");
return 0;
}
輸出是:
The string is 3. The string is typeA.
我需要修改代碼以某種方式使輸出的第二行會「字符串3」。
謝謝!
PS:我不想用printf打印這個值。我需要一個包含該值的靜態字符串。我只使用printf來測試結果...
請詳細說明您的奇怪要求。如果你需要字符串,你可以使用sprintf()而不是printf()。 – qrdl 2009-10-03 18:55:43