C++和Python使用同一個(gè)枚舉的方法

字號(hào):

為了能快速修改程序的邏輯,我在C++ 程序中使用了 Python作為腳本。
    程序內(nèi)部需要接收腳本傳過來的一些不同類型的消息,在C++ 程序中使用了枚舉來區(qū)分這些消息。 于是編寫腳本時(shí)想到:
    如何能在Python中也使用這些枚舉?如何只維護(hù)一個(gè)文件?
    1.Python中沒有枚舉類型,所以打算在文件中直接寫一些變量并賦值:
    ENUM_VALUE1 = 1
    ENUM_VALUE2 = 2
    ...
    2.C++中的變量必須聲明,所以只能使用枚舉或宏定義,但是"#"在Python中是注釋,所以只能使用枚舉,所以我打算將定義文件寫成上面那種形式(假設(shè)文件名:"Micro.py"),然后C++中:
    enum
    {
        #include "Micro.h"
    }
    但是 enum 中的每個(gè)定義后面都應(yīng)該有逗號(hào)",",要不然C++中就無法編譯通過了,所以我加入另一個(gè)文件"Comma.h",文件中只有一個(gè)逗號(hào)",",然后把定義文件修改成這樣:
    ENUM_VALUE1 = 1
    #include "Comma.h"
    ENUM_VALUE2 = 2
    #include "Comma.h"
    ...
    3.我們的定義文件中還應(yīng)該有注釋內(nèi)容,要不然別人就看不懂這些定義到底代表啥意思了,考慮到C++中的注釋用"http://",Python中的注釋用"#",而"#"在C++中是編譯預(yù)處理指令的開始,所以我又把定義文件改寫成這樣:
    #define _C_PY_DESCRIBE1 "宏定義描述1"
    ENUM_VALUE1 = 1
    #include "Comma.h"
    #define _C_PY_DESCRIBE2 "宏定義描述2"
    ENUM_VALUE2 = 2
    #include "Comma.h"
    ...
    結(jié)束了,呵呵,雖然很變態(tài),但是至少實(shí)現(xiàn)了宏定義的統(tǒng)一;
    其他:
    1.文件擴(kuò)展名只能保存為".py",所以C++中看不到語法高亮了。
    2.如果注釋中包含中文,那么宏定義文件應(yīng)該保存為utf8格式,否則Python會(huì)提示未聲明解碼方式。