3
我想創建一個方法get_name(...),它返回一個enum_value的名字。枚舉值很少,但可以高達1^32 - 1(所以我不認爲我可以使用數組映射)。返回一個臨時的const char * - 它會起作用
我做了以下內容:
const char* get_name(type_t x) {
static const char* name_1 = "NAME_FOR_TYPE_1";
static const char* name_2 = "NAME_FOR_TYPE_2";
...
static const char* invalid = "INVALID";
switch (x) {
case type_1: return name_1;
case type_2: return name_2;
...
}
return invalid;
}
然後,我被告知以下也將工作:
const char* get_name(type_t x) {
switch (x) {
case type_1: return "NAME_FOR_TYPE_1";
case type_2: return "NAME_FOR_TYPE_2";
...
}
return "INVALID";
}
是真的嗎?它會一直工作嗎?
我沒有返回臨時指針嗎?
什麼是「臨時」?你讀過關於範圍和壽命的內容嗎?哪一部分令人困惑?看,分享你的研究也會幫助其他人。 –