从 C++ 代码中剥离注释,同时保留行号
Stripping comments from c++ code while retaining line numbering
我想从 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;
}
在 GCC 中,带有数字和文件名的 #
指令对应于行号,因此保持适当的 __LINE__
值。
我想从 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;
}
在 GCC 中,带有数字和文件名的 #
指令对应于行号,因此保持适当的 __LINE__
值。