我有一個令牌列表,我想從中創建一個枚舉(小數)和一個字符串數組(稍後用於創建要枚舉的字符串映射)。這裏是我的嘗試:從預處理器標記創建字符串數組
#define TOKEN_LIST CUBE , SPHERE , CIRCLE
#define CREATE_ARRAY_OF_STRINGS(...) const char* token[] = { __VA_ARGS__ };
CREATE_ARRAY_OF_STRINGS(TOKEN_LIST)
// enum SHAPE_TYPE{ TOKEN_LIST }; // easy
int main(int argc, char *argv[])
{
return 1;
}
的問題是,如下TOKEN_LIST
不字符串化如圖所示,當我與-E
標誌進行編譯:
const char* token[] = { CUBE , SPHERE , CIRCLE };
int main(int argc, char *argv[])
{
return 1;
}
凡const char* token[] = { CUBE , SPHERE , CIRCLE };
應該const char* token[] = { "CUBE" , "SPHERE" , "CIRCLE" };
有任何其他方式來實現這與C + + 03?升壓處理器也許?
爲什麼你需要這個? 如果您使用宏,這意味着您在代碼開始執行之前知道。所以你可以將它們存儲在變量中。並用於創建數組或直接在數組初始化中使用它們。 – MASh
爲了自動更新字符串映射到枚舉。我只想在一點處註冊令牌並自動更新枚舉列表和地圖。但這不是我需要幫助的部分。 – Olumide