c++ - 从 C++ 代码中剥离注释,同时保留行号

标签 c++ gcc comments

我想从 C++ 文件中删除注释。这post为此提供了以下解决方案:

gcc -fpreprocessed -dD -E test.c

但是,此命令似乎会折叠较长的多行注释。如果使用宏 __LINE__,这会导致行为差异。

是否可以挽救 gcc 解决方案以不更改依赖于 __LINE__ 的行为?或者,非 gcc 解决方案也可以正常工作。

示例测试.c:

int main() {
        /*
         *
         *
         *
         *
         * comment 1
         */
        // comment 2
        return 0;
}

使用 gcc 4.9.2 的输出:

$ gcc -fpreprocessed -dD -E test.c
# 1 "test.c"
int main() {
# 10 "test.c"
 return 0;
}

如果我们删除 //comment 2,那么我们将获得所需的输出而不会折叠评论:

$ gcc -fpreprocessed -dD -E test.c
# 1 "test.c"
int main() {







 return 0;
}

最佳答案

在 GCC 中,带有数字和文件名的 # 指令对应于行号,因此保持适当的 __LINE__ 值。

关于c++ - 从 C++ 代码中剥离注释,同时保留行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34861019/

相关文章:

c - 如何用_mm_clflushopt函数编译程序?错误 : inlining failed

ruby-on-rails - 基于 AJAX 的评论不会在正确的微博下发布 (Ruby on Rails)

c++ - extern "C"没有禁用名称修改

c++ - 位图正在拉伸(stretch)而不是平铺

将 GNU case 范围扩展转换为标准 C

php - 按喜欢对 Facebook 评论插件进行排序

wordpress - 仅显示作者的最新评论

c++ - 显示最高值及其名称

c++ - 对重载函数模板的模糊调用 - 即使一个更专业?

c++ - 用非常量变量声明数组大小