第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有簡單的方法將C+枚舉轉換成字符串嗎?

有簡單的方法將C+枚舉轉換成字符串嗎?

C++
慕虎7371278 2019-07-04 13:51:41
有簡單的方法將C+枚舉轉換成字符串嗎?假設我們有一些命名的枚舉:enum MyEnum {       FOO,       BAR = 0x50};我在google中搜索的是一個腳本(任何語言),它掃描項目中的所有標頭,并生成一個每個枚舉都有一個函數(shù)的標頭。char* enum_to_string(MyEnum t);一個類似這樣的實現(xiàn):char* enum_to_string(MyEnum t){       switch(t){          case FOO:             return "FOO";          case BAR:             return "BAR";          default:             return "INVALID ENUM";       }  }這個問題實際上是帶有類型的枚舉和未命名的C樣式枚舉。有人知道這件事嗎?編輯:除了生成的函數(shù)之外,解決方案不應該修改我的源代碼。枚舉在API中,所以使用到目前為止提出的解決方案并不是一種選擇。
查看完整描述

3 回答

?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

你可能想退房GCCXML.

在示例代碼上運行GCCXML會產生以下結果:

<GCC_XML>
  <Namespace id="_1" name="::" members="_3 " mangled="_Z2::"/>
  <Namespace id="_2" name="std" context="_1" members="" mangled="_Z3std"/>
  <Enumeration id="_3" name="MyEnum" context="_1" location="f0:1" file="f0" line="1">
    <EnumValue name="FOO" init="0"/>
    <EnumValue name="BAR" init="80"/>
  </Enumeration>
  <File id="f0" name="my_enum.h"/></GCC_XML>

您可以使用任何您喜歡的語言來提取枚舉和EnumValue標記并生成所需的代碼。


查看完整回答
反對 回復 2019-07-04
?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

X-宏是最好的解決方案。例子:

#include <iostream>enum Colours {#   define X(a) a,#   include "colours.def"#   undef X
    ColoursCount};char const* const colours_str[] = {#   define X(a) #a,#   include "colours.def"#   undef X
    0};std::ostream& operator<<(std::ostream& os, enum Colours c){
    if (c >= ColoursCount || c < 0) return os << "???";
    return os << colours_str[c];}int main(){
    std::cout << Red << Blue << Green << Cyan << Yellow << Magenta << std::endl;}

色系:

X(Red)X(Green)X(Blue)X(Cyan)X(Yellow)X(Magenta)

但是,我通常更喜歡下面的方法,這樣就可以稍微修改字符串了。

#define X(a, b) a,#define X(a, b) b,X(Red, "red")X(Green, "green")// etc.


查看完整回答
反對 回復 2019-07-04
?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

沒有額外的文件:

#define SOME_ENUM(DO) \
    DO(Foo) \
    DO(Bar) \
    DO(Baz)#define MAKE_ENUM(VAR) VAR,enum MetaSyntacticVariable{
    SOME_ENUM(MAKE_ENUM)};#define MAKE_STRINGS(VAR) #VAR,const char* const MetaSyntacticVariableNames[] = {
    SOME_ENUM(MAKE_STRINGS)};


查看完整回答
反對 回復 2019-07-04
  • 3 回答
  • 0 關注
  • 2524 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號