为什么我不能注释掉这个字符串?

10

我无法在XCode编辑器中使用/* */对以下代码行进行注释并编译。我从一个XPath查询中的更复杂字符串中提取了这个示例:

字符串本身看起来很好:

NSString* s = @"//*//";

这段代码在我的电脑上无法编译:

/*
NSString* s = @"//*//";
*/

XCode 4.4。如果有人能确认我没有犯傻,我会提交一个radar报告。

编辑: 很高兴看到SO的语法高亮器也存在问题...

编辑: 好了,我向苹果提交了一个bug报告。谢谢。

编辑: 根据Rob在下面的回答,这不是一个bug :) 谢谢你解释,Rob;现在完全可以理解了。


很有趣,对字符串中的字符进行转义似乎可以解决问题,但这并不是一个完美的解决方案……有点烦人。 - Mick MacCallum
我并不觉得语法高亮出问题是什么奇怪的事情。但编译器却因此而崩溃确实让我感到惊讶。我猜测这个语法高亮器一定共用了编译器的前端… - TomSwift
我认为Rob Mayoff是正确的,所以我撤回了我的先前评论。 - JWWalker
2个回答

7
这并不是编译器的bug。双引号字符“"”在注释中没有特殊含义,因此预处理器不会注意到它。预处理器只是在看到“*/”字符时结束注释。
最好的注释代码段的方法是在每行开头加上“//”。每个“//”注释在下一个换行符处结束。Xcode有一个菜单命令(快捷键:⌘/),可以通过在每行开头插入或删除“//”来注释或取消注释所选行。

甚至还有一个键盘快捷键——在高亮显示的块上使用command-slash。 - Ben Zotto
@BenZotto 我当时是在iPad上写的,所以不确定快捷键。谢谢你提醒我。 - rob mayoff

0

它可以检测到@"//*//";中的结束注释。我不知道有哪个编辑器允许嵌套块注释(我知道这不是你正在做的,但是这是相同的问题)。请注意即使是SO上的语法高亮器也会出现问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接