Enum in C,C++

C: C11 以上

第一种方式:言语成了抢功尽责的功臣,还要行为来值班吗

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/**
 * @file duLangMap.h
 * @author geovindu,Geovin Du(geovindu@163.com)
 * @brief vscode c11
 * @version 0.1
 * @date 2023-12-18
 *
 * @copyright Copyright (c) 站在巨人的肩膀上 Standing on the Shoulders of Giants 2023 
 *
 */
#ifndef DULANGMAP_H
#define DULANGMAP_H
  
#define ChinseLangsList \
        DUX(afdu) \
        DUX(aldu) \
        DUX(ardu) \
        DUX(azdu) \
        DUX(bgdu) \
        DUX(cadu) \
        DUX(czdu) \
        DUX(dadu) \
        DUX(dedu) \
        DUX(eldu) \
        DUX(endu) \
        DUX(eudu) \
        DUX(fadu) \
        DUX(fidu) \
        DUX(frdu) \
        DUX(gldu) \
        DUX(hedu) \
        DUX(hidu) \
        DUX(hrdu) \
        DUX(hudu) \
        DUX(iddu) \
        DUX(itdu) \
        DUX(jadu) \
        DUX(krdu) \
        DUX(ladu) \
        DUX(ltdu) \
        DUX(mkdu) \
        DUX(nodu) \
        DUX(nldu) \
        DUX(pldu) \
        DUX(ptdu) \
        DUX(pt_brdu) \
        DUX(rodu) \
        DUX(rudu) \
        DUX(svdu) \
        DUX(sedu) \
        DUX(skdu) \
        DUX(sldu) \
        DUX(spdu) \
        DUX(esdu) \
        DUX(srdu) \
        DUX(thdu) \
        DUX(trdu) \
        DUX(uadu) \
        DUX(ukdu) \
        DUX(vidu) \
        DUX(zh_cndu) \
        DUX(zh_twdu) \
        DUX(zudu)
  
typedef enum
{
  #define DUX(name) name,
    ChinseLangsList
  #undef DUX
    Chinse_Count
} numbers_t;
  
/**
 * @brief
 *
 */
static const char* LangDuToString[Chinse_Count] =
{
  #define DUX(name) [name] = #name,
    ChinseLangsList
  #undef DUX
};
#endif

  

第二种方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/**
 * @file LanguageList.h
 * @author geovindu,Geovin Du,涂聚文 (geovindu@163.com)
 * @brief 
 * IDE: vscode c11
 * @version 0.1
 * @date 2023-12-18
 *
 * @copyright Copyright (c) 站在巨人的肩膀上 Standing on the Shoulders of Giants 2023
 *
 */
 
#ifndef LANGUAGELIST_H
#define LANGUAGELIST_H
  
  
#define EnumLangTypeCase(x)   case x: return(#x);
  
/**
 * @brief      语种类型
 *
 */
enum DuLang
{
  
        af= 0,// Afrikaans
        al=1 ,// Albanian
        ar=2 ,// Arabic
        az=3 ,// Azerbaijani
        bg=4 ,// Bulgarian
        ca=5 ,// Catalan
        cz=6 ,// Czech
        da=7 ,// Danish
        de=8 ,// German
        el=9 ,// Greek
        en=10 ,// English
        eu=11 ,// Basque
        fa=12 ,// Persian (Farsi)
        fi=13,// Finnish
        fr=14,// French
        gl=15 ,// Galician
        he=16 ,// Hebrew
        hi=17,// Hindi
        hr=18 ,// Croatian
        hu=19,// Hungarian
        id=20,// Indonesian
        it=21,// Italian
        ja=22 ,// Japanese
        kr=23 ,// Korean
        la=24,// Latvian
        lt=25,// Lithuanian
        mk=26 ,// Macedonian
        no=27 ,// Norwegian
        nl=28 ,// Dutch
        pl=29,// Polish
        pt=30,// Portuguese
        pt_br=31,// Português Brasil
        ro=32,// Romanian
        ru=33,// Russian
        sv=34 ,// se Swedish
        se=35,
        sk=36 ,// Slovak
        sl=37 ,// Slovenian
        sp=38 ,// es Spanish
        es=39,
        sr=40 ,// Serbian
        th=41 ,// Thai
        tr=42,// Turkish
        ua=43,// uk Ukrainian
        uk=44,
        vi=45,// Vietnamese
        zh_cn=46 ,// Chinese Simplified
        zh_tw=47 ,// Chinese Traditional
        zu=48  // Zulu
};
  
/**
 * @brief     
 *
 */
static inline const char *LangtoString(enum DuLang type)
{
    switch (type){
        EnumLangTypeCase(af)// Afrikaans
        EnumLangTypeCase(al)// Albanian
        EnumLangTypeCase(ar)// Arabic
        EnumLangTypeCase(az)// Azerbaijani
        EnumLangTypeCase(bg)// Bulgarian
        EnumLangTypeCase(ca)// Catalan
        EnumLangTypeCase(cz)// Czech
        EnumLangTypeCase(da)// Danish
        EnumLangTypeCase(de)// German
        EnumLangTypeCase(el)// Greek
        EnumLangTypeCase(en)// English
        EnumLangTypeCase(eu)// Basque
        EnumLangTypeCase(fa)// Persian (Farsi)
        EnumLangTypeCase(fi)// Finnish
        EnumLangTypeCase(fr)// French
        EnumLangTypeCase(gl)// Galician
        EnumLangTypeCase(he)// Hebrew
        EnumLangTypeCase(hi)// Hindi
        EnumLangTypeCase(hr)// Croatian
        EnumLangTypeCase(hu)// Hungarian
        EnumLangTypeCase(id)// Indonesian
        EnumLangTypeCase(it)// Italian
        EnumLangTypeCase(ja)// Japanese
        EnumLangTypeCase(kr)// Korean
        EnumLangTypeCase(la)// Latvian
        EnumLangTypeCase(lt)// Lithuanian
        EnumLangTypeCase(mk)// Macedonian
        EnumLangTypeCase(no)// Norwegian
        EnumLangTypeCase(nl)// Dutch
        EnumLangTypeCase(pl)// Polish
        EnumLangTypeCase(pt)// Portuguese
        EnumLangTypeCase(pt_br)// Português Brasil
        EnumLangTypeCase(ro)// Romanian
        EnumLangTypeCase(ru)// Russian
        EnumLangTypeCase(sv)// se Swedish
        EnumLangTypeCase(se)
        EnumLangTypeCase(sk)// Slovak
        EnumLangTypeCase(sl)// Slovenian
        EnumLangTypeCase(sp)// es Spanish
        EnumLangTypeCase(es)
        EnumLangTypeCase(sr)// Serbian
        EnumLangTypeCase(th)// Thai
        EnumLangTypeCase(tr)// Turkish
        EnumLangTypeCase(ua)// uk Ukrainian
        EnumLangTypeCase(uk) //
        EnumLangTypeCase(vi)// Vietnamese
        EnumLangTypeCase(zh_cn)// Chinese Simplified
        EnumLangTypeCase(zh_tw)// Chinese Traditional
        EnumLangTypeCase(zu)// Zulu
    }
    return "nodata";
}
  
#endif

  

调用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "include/duLangMap.h"
#include "include/LanguageList.h"
 
 
int main()
{
 
 printf("hello world, c \n");
    printf("你好,中国\n");
 
     //简体中文 46
    printf("%s\n",LangtoString(46));
    printf("%s\n",LangtoString(zh_cn));
  
    printf("%s\n",LangDuToString[2]);
    printf("%s\n",LangDuToString[zh_cndu]);
    return 0
}

  

输出:

 

 第三种方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/**
 * *****************************************************************************
 * @file        LanguageDu.h
 * @brief      
 * @author       (geovindu,Geovin Du)
 * @date        2023-12-19
 * @copyright   geovindu 站在巨人的肩膀上 Standing on the Shoulders of Giants
 * *****************************************************************************
 */
 
typedef enum LangNum
{
        afd= 0,// Afrikaans
        ald=1 ,// Albanian
        ard=2 ,// Arabic
        azd=3 ,// Azerbaijani
        bgd=4 ,// Bulgarian
        cad=5 ,// Catalan
        czd=6 ,// Czech
        dad=7 ,// Danish
        ded=8 ,// German
        eld=9 ,// Greek
        end=10 ,// English
        eud=11 ,// Basque
        fad=12 ,// Persian (Farsi)
        fid=13,// Finnish
        frd=14,// French
        gld=15 ,// Galician
        hed=16 ,// Hebrew
        hid=17,// Hindi
        hrd=18 ,// Croatian
        hud=19,// Hungarian
        idd=20,// Indonesian
        itd=21,// Italian
        jad=22 ,// Japanese
        krd=23 ,// Korean
        lad=24,// Latvian
        ltd=25,// Lithuanian
        mkd=26 ,// Macedonian
        nod=27 ,// Norwegian
        nld=28 ,// Dutch
        pld=29,// Polish
        ptd=30,// Portuguese
        pt_brd=31,// Português Brasil
        rod=32,// Romanian
        rud=33,// Russian
        svd=34 ,// se Swedish
        sed=35,
        skd=36 ,// Slovak
        sld=37 ,// Slovenian
        spd=38 ,// es Spanish
        esd=39,
        srd=40 ,// Serbian
        thd=41 ,// Thai
        trd=42,// Turkish
        uad=43,// uk Ukrainian
        ukd=44,
        vid=45,// Vietnamese
        zh_cnd=46 ,// Chinese Simplified
        zh_twd=47 ,// Chinese Traditional
        zud=48,// Zulu
        Max
} LangNumdu;
 
/**
 * @brief      
 *
 */
static const char* LangNumduToString[Max] =
{
        [afd]="afd",// Afrikaans
        [ald]="ald",// Albanian
        [ard]="ard",// Arabic
        [azd]="azd",// Azerbaijani
        [bgd]="bgd",// Bulgarian
        [cad]="cad",// Catalan
        [czd]="czd",// Czech
        [dad]="dad",// Danish
        [ded]="ded",// German
        [eld]="eld",// Greek
        [end]="end",// English
        [eud]="eud",// Basque
        [fad]="fad",// Persian (Farsi)
        [fid]="fid",// Finnish
        [frd]="frd",// French
        [gld]="gld",// Galician
        [hed]="hed",// Hebrew
        [hid]="hid",// Hindi
        [hrd]="hrd",// Croatian
        [hud]="hud",// Hungarian
        [idd]="idd",// Indonesian
        [itd]="itd",// Italian
        [jad]="jad",// Japanese
        [krd]="krd",// Korean
        [lad]="lad",// Latvian
        [ltd]="ltd",// Lithuanian
        [mkd]="mkd",// Macedonian
        [nod]="nod",// Norwegian
        [nld]="nld",// Dutch
        [pld]="pld",// Polish
        [ptd]="ptd",// Portuguese
        [pt_brd]="pt_brd",// Português Brasil
        [rod]="rod",// Romanian
        [rud]="rud",// Russian
        [svd]="svd",// se Swedish
        [sed]="sed",
        [skd]="skd",// Slovak
        [sld]="sld",// Slovenian
        [spd]="spd",// es Spanish
        [esd]="esd",
        [srd]="srd",// Serbian
        [thd]="thd",// Thai
        [trd]="trd",// Turkish
        [uad]="uad",// uk Ukrainian
        [ukd]="ukd",
        [vid]="vid",// Vietnamese
        [zh_cnd]="zh_cnd",// Chinese Simplified
        [zh_twd]="zh_twd",// Chinese Traditional
        [zud]="zud"// Zulu
 
};

 

调用:

1
2
printf("%s\n",LangNumduToString[46]);
printf("%s\n",LangNumduToString[zh_cnd]);

  

 

 

 

 

C++: C++14 以上

第一种方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
/*****************************************************************//**
 * \file   LanguageList.h
 * \brief
 *  https://belaycpp.com/2021/08/24/best-ways-to-convert-an-enum-to-a-string/
 * \ IDE  vs 2022 C++ 20
 * \author geovindu
 * \date   December 18 2023
 * \copyright   geovindu 站在巨人的肩膀上 Standing on the Shoulders of Giants
 *********************************************************************/
#pragma once
  
#ifndef LANGUAGELIST_H
#define LANGUAGELIST_H
  
  
#include <iostream>
  
  
/**
 * \brief
 *
 */
enum class Lang  //:string .net 8
{
    af,// Afrikaans
    al,// Albanian
    ar,// Arabic
    az,// Azerbaijani
    bg,// Bulgarian
    ca,// Catalan
    cz,// Czech
    da,// Danish
    de,// German
    el,// Greek
    /// <summary>
    /// 英文
    /// </summary>
    en,// English
    eu,// Basque
    fa,// Persian (Farsi)
    fi,// Finnish
    fr,// French
    gl,// Galician
    he,// Hebrew
    hi,// Hindi
    hr,// Croatian
    hu,// Hungarian
    id,// Indonesian
    it,// Italian
    ja,// Japanese
    kr,// Korean
    la,// Latvian
    lt,// Lithuanian
    mk,// Macedonian
    no,// Norwegian
    nl,// Dutch
    pl,// Polish
    pt,// Portuguese
    pt_br,// Português Brasil
    ro,// Romanian
    ru,// Russian
    sv,// se Swedish
    se,
    sk,// Slovak
    sl,// Slovenian
    sp,// es Spanish
    es,
    sr,// Serbian
    th,// Thai
    tr,// Turkish
    ua,// uk Ukrainian
    uk,
    vi,// Vietnamese
    /// <summary>
    /// 简体中文
    /// </summary>
    zh_cn,// Chinese Simplified
    /// <summary>
    /// 繁体中文
    /// </summary>
    zh_tw,// Chinese Traditional
    zu// Zulu
  
};
  
/**
 * \brief
 *
 * \param l
 * \return
 */
const char* LangToString(Lang l) noexcept
{
    switch (l)
    {
        case Lang::af: return "af";// Afrikaans
        case Lang::al: return "al";// Albanian
        case Lang::ar: return "ar";// Arabic
        case Lang::az: return "az";// Azerbaijani
        case Lang::bg: return "bg";// Bulgarian
        case Lang::ca: return "ca";// Catalan
        case Lang::cz: return "cz";// Czech
        case Lang::da: return "da";// Danish
        case Lang::de: return "de";// German
        case Lang::el: return "el";// Greek
        case Lang::en: return "en";// English
        case Lang::eu: return "eu";// Basque
        case Lang::fa: return "fa";// Persian (Farsi)
        case Lang::fi: return "fi";// Finnish
        case Lang::fr: return "fr";// French
        case Lang::gl: return "gl";// Galician
        case Lang::he: return "he";// Hebrew
        case Lang::hi: return "hi";// Hindi
        case Lang::hr: return "hr";// Croatian
        case Lang::hu: return "hu";// Hungarian
        case Lang::id: return "id";// Indonesian
        case Lang::it: return "it";// Italian
        case Lang::ja: return "ja";// Japanese
        case Lang::kr: return "kr";// Korean
        case Lang::la: return "la";// Latvian
        case Lang::lt: return "lt";// Lithuanian
        case Lang::mk: return "mk";// Macedonian
        case Lang::no: return "no";// Norwegian
        case Lang::nl: return "nl";// Dutch
        case Lang::pl: return "pl";// Polish
        case Lang::pt: return "pt";// Portuguese
        case Lang::pt_br: return "pt_br";// Português Brasil
        case Lang::ro: return "ro";// Romanian
        case Lang::ru: return "ru";// Russian
        case Lang::sv: return "sv";// se Swedish
        case Lang::se: return "se";
        case Lang::sk: return "sk";// Slovak
        case Lang::sl: return "sl";// Slovenian
        case Lang::sp: return "sp";// es Spanish
        case Lang::es: return "es";
        case Lang::sr: return "sr";// Serbian
        case Lang::th: return "th";// Thai
        case Lang::tr: return "tr";// Turkish
        case Lang::ua: return "ua";// uk Ukrainian
        case Lang::uk: return "uk";
        case Lang::vi: return "vi";// Vietnamese
        case Lang::zh_cn: return "zh_cn";// Chinese Simplified
        case Lang::zh_tw: return "zh_tw";// Chinese Traditional
        case Lang::zu: return "zu";// Zulu
        default: throw std::invalid_argument("nodata");
    }
}
  
  
#endif

  

调用:

1
2
3
4
5
6
7
8
9
10
11
12
13
#include "LanguageList.h"
  
using namespace std;
  
int main()
{
  
  
    std::cout << "Hello World!涂聚文 Geovin Du\n";
    std::cout<< LangToString(Lang::zh_cn)<< std::endl;
    return 0;
  

  

 

第二种方式:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/*****************************************************************//**
 * \file   DuLanguage.h
 * \brief  语言种类
 *
 * \ IDE  vs 2022 C++ 20
 * \author geovindu
 * \date   December 18 2023
 * \copyright   geovindu 站在巨人的肩膀上 Standing on the Shoulders of Giants
 *********************************************************************/
#pragma once
  
#ifndef DULANGUAGE_H
#define DULANGUAGE_H
  
  
#include <iostream>
  
/**
 * @brief .
 */
#define DuLang(name, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21,v22,v23,v24,v25,v26,v27,v28,v29,v30,v31,v32,v33,v34,v35,v36,v37,v38,v39,v40,v41,v42,v43,v44,v45,v46,v47,v48,v49)\
    enum name { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21,v22,v23,v24,v25,v26,v27,v28,v29,v30,v31,v32,v33,v34,v35,v36,v37,v38,v39,v40,v41,v42,v43,v44,v45,v46,v47,v48,v49 };\
    const char *name##Strings[] = { #v1, #v2, #v3, #v4, #v5, #v6, #v7, #v8, #v9, #v10,#v11,#v12,#v13,#v14,#v15,#v16,#v17,#v18,#v19,#v20,#v21,#v22,#v23,#v24,#v25,#v26,#v27,#v28,#v29,#v30,#v31,#v32,#v33,#v34,#v35,#v36,#v37,#v38,#v39,#v40,#v41,#v42,#v43,#v44,#v45,#v46,#v47,#v48,#v49 };\
    const char *name##ToString(int value) { return name##Strings[value]; }
  
  
/**
 * @brief 语言类型.
 */
DuLang(dLang, af,// Afrikaans
    al,// Albanian
    ar,// Arabic
    az,// Azerbaijani
    bg,// Bulgarian
    ca,// Catalan
    cz,// Czech
    da,// Danish
    de,// German
    el,// Greek
    /**
     * \brief 英语.
     */
    en,// English
    eu,// Basque
    fa,// Persian (Farsi)
    fi,// Finnish
    fr,// French
    gl,// Galician
    he,// Hebrew
    hi,// Hindi
    hr,// Croatian
    hu,// Hungarian
    id,// Indonesian
    it,// Italian
    ja,// Japanese
    kr,// Korean
    la,// Latvian
    lt,// Lithuanian
    mk,// Macedonian
    no,// Norwegian
    nl,// Dutch
    pl,// Polish
    pt,// Portuguese
    pt_br,// Português Brasil
    ro,// Romanian
    ru,// Russian
    sv,// se Swedish
    se,
    sk,// Slovak
    sl,// Slovenian
    sp,// es Spanish
    es,
    sr,// Serbian
    th,// Thai
    tr,// Turkish
    ua,// uk Ukrainian
    uk,
    vi,// Vietnamese
    /**
    * @brief 简体中文.
    */
    zh_cn,// Chinese Simplified
    /**
     * @brief 繁体中文.
     */
    zh_tw,// Chinese Traditional
    zu// Zulu
);
  
  
  
  
  
#endif

  

调用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "DuLanguage.h"
  
using namespace std;
  
int main()
{
  
  
    std::cout << "Hello World!涂聚文 Geovin Du\n";
    //int a = 2;
    //std::cout<< LangToString(Lang::zh_cn)<< std::endl;
  
    std::cout << dLangToString(dLang::zh_cn)<< std::endl;
    return 0;
}

  

 输出:

 

 

 

 

第三种方式:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/*****************************************************************//**
 * \file   ChineseLang.h
 * \brief  语言类型枚举
 * https://stackoverflow.com/questions/201593/is-there-a-simple-way-to-convert-c-enum-to-string
 * \ IDE  vs 2022 C++ 20
 * \author geovindu
 * \date   December 18 2023
 * \copyright   geovindu 站在巨人的肩膀上 Standing on the Shoulders of Giants
 *********************************************************************/
#pragma once
#ifndef CHINESELANG_H
#define CHINESELANG_H
  
  
 /**
  * @brief,不可以再用.如果有类似的语言类型枚举,这个不可以用,互相冲突
  * 格式关键
  */
#define DEF_ChinseLang  \
       Du(af, "af") \
        Du(al, "al") \
        Du(ar, "ar") \
        Du(az, "az") \
        Du(bg, "bg") \
        Du(ca, "ca") \
        Du(cz, "cz") \
        Du(da, "da") \
        Du(de, "de") \
        Du(el, "el") \
        Du(en, "en") \
        Du(eu, "eu") \
        Du(fa, "fa") \
        Du(fi, "fi") \
        Du(fr, "fr") \
        Du(gl, "gl") \
        Du(he, "he") \
        Du(hi, "hi") \
        Du(hr, "hr") \
        Du(hu, "hu") \
        Du(id, "id") \
        Du(it, "it") \
        Du(ja, "ja") \
        Du(kr, "kr") \
        Du(la, "la") \
        Du(lt, "lt") \
        Du(mk, "mk") \
        Du(no, "no") \
        Du(nl, "nl") \
        Du(pl, "pl") \
        Du(pt, "pt") \
        Du(pt_br, "pt_br") \
        Du(ro, "ro") \
        Du(ru, "ru") \
        Du(sv, "sv") \
        Du(se, "se") \
        Du(sk, "sk") \
        Du(sl, "sl") \
        Du(sp, "sp") \
        Du(es, "es") \
        Du(sr, "sr") \
        Du(th, "th") \
        Du(tr, "tr") \
        Du(ua, "ua") \
        Du(uk, "uk") \
        Du(vi, "vi") \
        Du(zh_cn, "zh_cn") \
        Du(zh_tw, "zh_tw") \
        Du(zu, "zu")
  
  
enum ChinseLang {
#define Du(name, str) name,
    DEF_ChinseLang
#undef Du
    CHINESE_count
};
  
/**
 * @brief.
 *
 * \param c
 * \return
 */
const char* ChinseLangToStr(ChinseLang c) {
    switch (c) {
#define Du(name, str) case name : return str;
        DEF_ChinseLang
#undef Du
    default:
        return "";
    }
}
  
  
#endif

  

调用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "ChineseLang.h"
  
  
int main()
{
  
  
    std::cout << "Hello C++ World! 涂聚文 Geovin Du\n";
  
    std::cout << ChinseLangToStr(ChinseLang(2)) << std::endl; //0 索引开始
    std::cout << ChinseLangToStr(ChinseLang(al)) << std::endl;
     
  
    return 0;
} 

输出:

 

from:

https://en.cppreference.com/w/c/preprocessor/replace

https://en.cppreference.com/w/c/language/enum
https://codereview.stackexchange.com/questions/237410/macro-to-generate-an-enum-and-an-array-of-strings
https://codereview.stackexchange.com/questions/278448/discussing-approaches-for-converting-enum-to-string
https://kubyshkin.name/posts/c-language-enums-tips-and-tricks/

 https://belaycpp.com/2021/08/24/best-ways-to-convert-an-enum-to-a-string/

 

1982 年黨章和新憲法對四項基本原則的確認,引發憲法學界開始思考什麼是憲法的基本原則以及四項基本原則是否為憲法的基本原則等問題。這一時期中國學界對憲法原則的研究出現了較大發展。一方面,各種對憲法原則進行討論的文獻數量增多,出現了專門對憲法原則進行探討的文章,多數憲法學教材、講義均設獨立的章或節探討憲法原則,改變了對憲法原則進行分散介紹和批判的局面,代之於對憲法原則進行整體性的論述;另一方面,探討的內容包括對憲法原則與相關概念的關係,對資本主義國家和社會主義國家憲法分別確定和遵循哪些基本原則進行了歸納,對各原則進行論述、社會主義憲法原則與資本主義憲法原則之間關係等內容。

       --《共和國六十年法學論爭實錄--憲法卷》 江平總主編   廈門大學出版社 2009年10月

 

 

蕭公權先生曾論及帝制國家控制其臣民的方式,主要有三:

一是通過照顧臣民基本的物質需求,避免臣民因難以忍受艱困的生活“挺而走險”;二則通過向臣民反復灌輸精心篩選的道德教條(大部分是從儒家學說中篩選出來的),使臣民接受或認同現存的統治秩序;三則通過不斷監視臣民,從而查出“奸民”並及時加以處理。

張榮明先生則認為:西周時代行政組織的主體是以宗族為機制的血緣組織,而“以地緣為基礎的行政區域的劃分是西周血緣組織的崩潰的結果,是春秋戰國社會變革形成的社會制度”。

       --《中國古代鄉裡制度研究》 魯西奇著,北京大學出版社  2021年4月

 

 

在其一般意義上,政府正義,即政府對社會公共事務進行管理的一種合理狀態,意味著政府不妨礙且促進權利和義務、資源與利益在社會成員之間的適當安排和合理分配。在其法哲學層面,政府正義的核心命題是“如何通過一個‘善’的政治過程及制度建設實現整個社會的正義或者一個正義的社會”在這個意義上,政府正義包含了兩層含義:一是政府本身應當是正義的一包括政府的產生和運行過程都應當合乎正義原理;二是政府是應當為實現正義而存在的--社會正義的實現,是需要政府這個存在的,而政府存在的根本價值,正在于實現社會正義。

       --法治政府要論叢書 《法治政府要論--基本原理》江國華 著  武漢大學出版社  2020年12月

posted @   ®Geovin Du Dream Park™  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2022-12-18 CSharp: Mediator Pattern in donet core 6
2022-12-18 CSharp: Iterator Pattern in donet core 6
2021-12-18 java: MS Sql Server Connection using JDK 14.02
2011-12-18 User select font-face/color/size/backgroundColor设置 字体,颜色,大小,背景色兼容主流浏览器
2010-12-18 Pure CSS folded-corner effect(IE8以上,其他瀏覽器可以)
2010-12-18 Pure CSS speech bubbles(IE7以下無效,其他瀏覽器有效)
2010-12-18 Javascript Context Menu Ex - dhtml popup menu mode
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示