我想从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;
}
答案 0 :(得分:1)
在GCC中,带有数字和文件名的#
指令对应于行号,因此保持适当的__LINE__
值。