2010-10-05 49 views
0

從本地,外部庫創建HTML文檔,我得到enum聲明一個頭文件:在CLI C++與宏

#define LIST(declare) \ 
    declare(A, "aaa") \ 
    declare(B, "bbb") \ 
    declare(C, "ccc") \ 

使用它,我創建了一個.NET枚舉:

#define EXTRACT(p1,p2) p1, 
enum class Val { LIST(EXTRACT) }; 

這很好。結果是Val.A,...值。現在,我想自動生成使用相同的方法/// aaa HTML文檔,使宏的輸出應該是這樣的:

enum class Val { 
    /// aaa 
    A, 
    /// bbb 
    B, 
    /// ccc 
    C, 
} 

創建像

#define EXTRACT(p1,p2) /// p2 \ 
          p1, 

宏不起作用,因爲C++編譯器將///作爲註釋處理,由於該行末尾的\,該註釋轉到下一行。

是否有可能在不使用codegen工具的情況下完成此操作?謝謝!

回答

1

微軟的預處理器不保留宏中的註釋。所以技術上插入換行符是不可能的。 See this Q & A查看詳情。

因此,使您的代碼生成不可能使用MS的預處理器首先。