整蠱 - 你將不得不解析C代碼。結果有多接近?我的意思 例子:
int a, /* foo */
b, /* << the unused one */
c; /* bar */
現在,這是明顯的是,第二個評論已去人類。
輕微變化:
void test(/* in */ int a, /* unused */ int b, /* out */ int* c);
同樣,第二個評論已去,一個b之前這段時間。
一般來說,你想分析你的輸入,過濾它,併發出一切不是未使用變量的聲明。你的解析器必須保留註釋和#include語句,但是如果你不包含#include頭文件,可能無法識別聲明(如果使用宏來隱藏聲明,則更是如此)。畢竟,你需要標題來決定是否A * B();是一個函數聲明(當A是一類)或乘(當A是一個變量)
[編輯]此外:
即使你知道一個變量是未使用的,有道刪除它取決於遠程上下文。例如,假設
int foo(int a, int b, int c) { return a + b; }
顯然,c未被使用。你能改變它嗎?
int foo(int a, int b) { return a + b; }
也許吧,但如果& foo的存儲INT一個int(*)(int,int,int)
。而這可能發生在別的地方。如果(且只有)發生這種情況,您應該將其更改爲
int foo(int a, int b, int /*unused*/) { return a + b; }
當然,你可以進一步,並說「int fun(int a,int b){return a + b;}」,並且消除sum。但那不是你的問題。 – 2009-02-18 12:51:15
你有沒有使用的變量列表的格式是什麼?它是否有行號和列號? – Constantin 2009-02-18 13:30:01
你爲什麼要這麼做?什麼阻止你手動刪除未使用的變量,只要它們變爲未使用?或者你的同事是否有意將它們放入代碼中,並告訴你在列表中刪除它們? – 2009-02-22 00:58:53