代码行作为预处理器定义的函数

时间:2011-04-28 07:10:28

标签: c c-preprocessor code-metrics

我正在处理的项目(在 C 中)有许多代码段,可以使用预处理器指令基于编译时配置包含或省略。

我有兴趣估计不同配置的代码行添加到我的核心项目中,或从中减去多少行代码。换句话说,我想在某处写一些#define#undef行,并了解它对LOC计数的作用。

我不熟悉LOC计数器,但从粗略的搜索来看,似乎大多数易于使用的工具都没有。我认为这不是一个难题,而只是一个相当罕见的衡量标准。

是否有现成的工具可以完成我正在寻找的工作,或者自己做一些简单的方法?排除评论和空白行也是一个很好的选择。

2 个答案:

答案 0 :(得分: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.

答案 1 :(得分:0)

您可以从编译器获得预处理器输出,但这可能会产生其他不必要的副作用,例如扩展复杂的多行宏,并以您不期望的方式添加到LOC计数中。

为什么不编写自己的简单预处理器,并使用自己的include / exclude指令?你可以简单地解析它们,然后通过这个预处理器管道代码,然后再将它发送到像CLOC这样的全功能LOC计数器。