我傳入一個C文件。 C文件包含包含局部變量的函數。給定任何C文件,我必須能夠找到特定方法(用戶指定)內的局部變量並使其成爲全局變量。 (另一個只能處理全局變量的應用程序的規範)...局部變量轉換爲全局變量?
這樣做的最簡單方法是什麼?是通過shell腳本還是直接在C中?我應該使用正則表達式嗎?我在想這樣做是錯誤的嗎?
任何幫助,將不勝感激
我傳入一個C文件。 C文件包含包含局部變量的函數。給定任何C文件,我必須能夠找到特定方法(用戶指定)內的局部變量並使其成爲全局變量。 (另一個只能處理全局變量的應用程序的規範)...局部變量轉換爲全局變量?
這樣做的最簡單方法是什麼?是通過shell腳本還是直接在C中?我應該使用正則表達式嗎?我在想這樣做是錯誤的嗎?
任何幫助,將不勝感激
您正在尋找變量的具體背景,在你的情況下,上下文是一個函數內聲明的局部變量。正則表達式可以用來抽出一個函數定義,但某種類型的令牌解析器會好得多。
使用C的簡化語法可以發現,你可以自己得到函數字符串,並從那裏你可以找到局部變量本身。
但是,如果傳入的C代碼是特定的格式,則IE局部變量位於函數定義的頂部,那麼可以使用簡單的正則表達式。
C99將允許變量在整個函數中在塊等內聲明,因此識別它們的任務很複雜。可以利用像yacc和flex這樣的詞法分析器來標記C源文件,然後將變量聲明從生成的結構中提取出來。實現這個通用目標可能需要很多工作。
這是非常複雜的。你不能使用正則表達式來做到這一點,而不需要從C代碼中獲得非常特殊的格式。但是,您可以做的事情是讓編譯器完成工作,編譯代碼並使用其診斷或調試信息。我沒有準備好編譯器(甚至是gcc)選項,所以我沒有把它作爲一個答案的格式,但是這肯定比正則表達式更有可能成功。 – fork0 2012-07-17 19:47:41