【问题标题】:Accept string results in code commenting接受字符串导致代码注释
【发布时间】:2014-12-01 13:44:13
【问题描述】:

我有这个来自MSDN page的sn-p

lplpszAcceptTypes - 指向以 null 结尾的字符串数组的指针,指示客户端接受的媒体类型。这是一个例子。

PCTSTR rgpszAcceptTypes[] = {_T(“text/*”), NULL};

这里的问题是“text/*” 中的/* 被intellisense 读取为注释,并且此行后面的代码被注释掉。这里的解决方案是什么?

【问题讨论】:

  • “text/ \ *” 我想
  • 在行尾添加注释?
  • 嘿,我的目的不是评论代码。目的是使 Accept 标头为 "text/*"
  • 您使用哪个版本的 Visual Studio?如果我使用正确的引号(只是直接的",而不是您在此处复制的风格化引号),VS2013 中的 IntelliSense 根本不会被字符串文字中出现的/* 混淆。
  • @KarthikNishanth 完成。而且我还将把它报告为 MSDN 页面的一个错误。

标签: c++ c visual-studio wininet


【解决方案1】:

IntelliSense 将其解析为注释的唯一原因是它不是正确的字符串文字。 C++ 字符串文字由简单的直引号 " 分隔,但 MSDN 示例可能是由于在不适合技术内容的文字处理器中编辑,使用了风格化引号 。这些不会被识别为引号,因此字符串文字也不会被识别,这会导致 IntelliSense 误入歧途。 (如果 MS 对可移植性有任何尊重的话,它也会使编译器误入歧途。)

【讨论】:

    【解决方案2】:

    请考虑这个:

    PCTSTR rgpszAcceptTypes[] = {_T(“text/” “*”), NULL};
    

    预编译阶段会透明地连接字符串,不会混淆 Intellisense。

    或者,您可以使用宏定义(我道歉 :)):

    #define SPLIT_PATH "/"
    PCTSTR rgpszAcceptTypes[] = {_T(“text” SPLIT_PATH “*”), NULL};
    

    ... 或转义字符串(正如@DoomProg 在评论中建议的那样)。

    【讨论】:

    • 但是大括号首先引起了问题 仍然会使这个无法编译...
    • 哦!我认为弯引号是复制粘贴造成的伪影,而不是代码的实际编写方式。 :-\
    猜你喜欢
    • 1970-01-01
    • 2014-04-12
    • 2013-04-07
    • 2015-01-08
    • 1970-01-01
    • 2011-02-04
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多