包括* /在C风格的块注释中

时间:2009-05-13 21:15:26

标签: c# c++ c comments block-comments

有没有办法在C风格的块注释中包含* /?在这种情况下,不能将块注释更改为一系列行注释(//)。

以下是导致问题的评论类型的示例:

/**
 * perl -pe 's/(?<=.{6}).*//g' : Limit to PID
 */

5 个答案:

答案 0 :(得分:24)

通常评论不需要是文字的,所以这不会经常出现。

你可以将它全部包装在#if块中:

#if 0
whatever you want can go here, comments or not
#endif

答案 1 :(得分:10)

都能跟得上!没有。

答案 2 :(得分:3)

您可以通过将正则表达式设置为不包含有问题的字符序列来解决问题。从你正在做的事情来看,这应该是有用的(使*非贪婪):

/**
 * perl -pe 's/(?<=.{6}).*?//g' : Limit to PID
 */

答案 3 :(得分:2)

在一般情况下,你不能。

在这种情况下,这是一个棘手的答案:

/**
 * perl -pe 's/(?<=.{6}).* //gx' : Limit to PID
 */

这是(或者应该是,我实际上没有测试perl命令)与原始匹配的正则表达式,因为x修饰符允许在表达式中使用空格,这允许{{1与*分开。

你可以使用更多的空格,我只包含了打破注释块标记结尾的单个空格。

某些编译器支持打开允许嵌套注释的非标准功能的选项。这通常是一个坏主意,但在这种特殊情况下你也可以这样做

/

仅为此源文件启用该选项。当然,正如上面片段中的时髦色彩所证明的那样,你的其他工具可能不知道你在做什么,并且会做出不正确的猜测。

答案 4 :(得分:0)

对于这种特定情况,您可以在perl正则表达式上change the delimiter。您可以使用任何非字母数字,非空白分隔符。在这里,我切换到#

/** 
 * perl -pe 's#(?<=.{6}).*##g' : Limit to PID
 */

常见的选择是#%

'包围字符'就像parens或braces一样,语法略有不同,因为它们预计会成对匹配:

/** 
 * perl -pe 's[(?<=.{6}).*][]g' : Limit to PID
 */