在保留行号的同时从c ++代码中删除注释

时间:2016-01-18 17:51:20

标签: c++ gcc comments

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

gcc -fpreprocessed -dD -E test.c

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

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

示例test.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;
}

1 个答案:

答案 0 :(得分:1)

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