2015-05-05 39 views
1

我目前使用Python解析使用LibClang的C文件。在閱讀一個由define-directive-variable定義大小的C數組時,我遇到了一個問題。使用Python&LibClang解析C數組大小

隨着node.get_children我可以完美地閱讀以下的數組:

int myarray[20][30][10]; 

如作爲數組大小被替換爲可變不久,該陣列將不能正確讀出。以下數組代碼無法讀取。

#define MAX 60; 
int myarray[MAX][30][10]; 

實際上,解析器停在MAX處,並在轉儲中出現錯誤:invalid sloc。

我該如何解決這個問題?

謝謝

回答

1

在嘗試解析它之前,通過C預處理器運行代碼。這將導致所有預處理器符號被其值替換,即您的[MAX]將變爲[60]

注意,C代碼也可以這樣做:

const int three[] = { 1, 2, 3 }; 

即讓編譯器推斷從給定的初始值設定的值的數量的陣列的長度。

或者,從C99,甚至這樣的:

const int hundred[] = { [99] = 4711 }; 

因此,一個天真的做法仍然有可能打破,但我不知道你使用的當然是解析器的能力東西。

+0

感謝您的回覆,事實上,錯誤比我想象的要簡單得多。定義中的分號導致錯誤。無論如何,謝謝你的時間。 – Firre

0

分號;在定義導致錯誤的指令方式。