2011-04-28 25 views
1

我正在開發的一個項目(在C中)有許多代碼段,可以使用預處理器指令基於編譯時配置進行包含或省略。作爲預處理器定義函數的代碼行

我很感興趣估計有多少行代碼不同的配置正在增加或減少我的核心項目。換句話說,我想在某處寫幾個#define#undef行,並且瞭解它對LOC計數有什麼影響。

我對LOC計數器並不熟悉,但從粗略的搜索中,似乎並不像大多數易於使用的工具那樣。我假設這不是一個困難的問題,但只是一個不常見的度量指標。

是否有現成的工具可以做我正在尋找的東西,或者一些簡單的方法來自己做?排除評論和空白行也將是一件很棒的事情。

回答

6

通過預處理器運行它。例如,在gcc下,我相信使用選項-E即可獲得您想要的那種輸出。

-E Stop after the preprocessing stage; do not run the compiler proper. 
     The output is in the form of preprocessed source code, which is sent 
     to the standard output. 
+0

酷!我不知道我能做到這一點。正如Jason所說,可能會有一些奇怪的預處理器添加,但這對我來說是一個很好的簡單的開始。 – Ziv 2011-04-28 07:35:36

0

你可以從你的編譯器輸出的預處理程序,但這可能有其他不必要的副作用,比如擴大複雜的多行宏,並增加了LOC計數的方式你沒有期望。

爲什麼不寫你自己的簡單的預處理器,並使用你自己的包含/排除指令?你可以簡單地解析它們,然後通過這個預處理器將代碼發送到像CLOC這樣的全功能的LOC計數器。