我想从 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/