> How to delete all comment line in one command line(C/C++)?
>
> Before:
>
> //////
> /*comment1*/
> //
> int Fun()
> {
> int a = 5; // number 1;
> int b = 10;// number 2;
> return a+b;// number 1 + number 2;
> }
>
> After:
> int Fun()
> {
> int a = 5;
> int b = 10;
> return a+b;
> }
Well, for just the simple cases, you could use something like
:%s!\s*//.*\|/\*\_.\{-}\*/
To make that more understandable, that's
\s*//.*
\|
/\*\_.\{-}\*/
where the first piece gets C++ style comments, and the
second/third bit finds C-style comments.
However, that doesn't catch odd things like:
printf("In C++, comments can be written with //\n");
printf("In C, /* this is a comment */\n");
#ifdef 0
printf("this is commented-out code\n");
#endif
It breaks the first one because it's not truely a comment, but a
string containing the comment characters. However, the above
regexp would mistakenly turn that into
printf("In C++, comments can be written with //
which will throw off your whole code-base :)
In the second one, it's not quite as dire, but you still are
deleting non-comments.
In the third one, you didn't mention using "#ifdef 0" or any of
its variants as a comment. I've seen this as a fairly common way
to comment out large blocks of code which might contain "real"
comments.
For any of these more complex cases, a more complex solution
would be required.
-tim