2014-10-13 92 views
1

我必須定義的對象,如高級別定義的高級別定義C結構:生成對象

obj1 => [ 
    name => "object1", 
    type => "uint64", 
    dependents => [ 
     {type => "unit32", name => "dep1"}, 
     {type => "uint32", name => "dep2"} 
    ], 
    default_value = "100" 
] 

從這個我想生成的C結構和一些幫助程序,如:

struct_dependents { 
    int type; 
    char name[MAX]; 
} 

struct struct_obj1 { 
    char name[MAX]; 
    int type; 
    struct dependents deps[MAX_DEP]; 
    unit64 default_value; 
} 

// Some initializations.. 

早些時候,我認爲我可以在.pm(perl模塊)文​​件中定義高級對象,然後使用perl生成C代碼,但是編寫代碼生成C代碼可能會出錯並且難以維護,如果對象定義在未來發生變化。

我想知道的是 - 是否有任何這樣的現成工具可以讓我們編寫高級對象定義並自動生成C結構?

+0

爲什麼會出現錯誤?爲什麼你需要用C以外的東西來定義C結構?爲什麼會有工具可以理解你的定義語言,或者你在定義語言中看到什麼? – ikegami

+0

這個想法是將高級對象定義暴露給更廣泛的受衆(甚至是客戶)以便快速理解,因此我們不想公開C代碼。 – pankaj

回答

1

C語言有很多代碼生成器 - 你更有可能找到使用中間語法(如xml)的東西;快速谷歌出現了xml2c。您可以使用XML :: Simple將散列保存爲xml。

更多examples可以在谷歌找到。

如果您希望自行推出,使用模板工具包生成代碼將提供flexible方法。