我有来自MSDN page
的这个代码段 lplpszAcceptTypes
- 指向以空字符结尾的字符串数组的指针,指示客户端接受的媒体类型。这是一个例子。
PCTSTR rgpszAcceptTypes[] = {_T(“text/*”), NULL};
这里的问题是/*
中的“text/*”
被intellisense读作注释,并且此行后面的代码被注释掉了。这里有什么解决方案?
答案 0 :(得分:5)
IntelliSense将其解析为注释的唯一原因是它不是一个正确的字符串文字。 C ++字符串文字由简单直引号"
分隔,但MSDN示例(可能由于在不适合技术内容的文字处理器中编辑)使用样式化引号“
和”
。这些不被识别为引号,因此字符串文字也未被识别,这导致IntelliSense误入歧途。 (如果MS对可移植性有任何尊重,那么它应该导致编译器误入歧途。)
答案 1 :(得分:3)
请考虑一下:
PCTSTR rgpszAcceptTypes[] = {_T(“text/” “*”), NULL};
预编译阶段将透明地连接字符串,并且不会混淆Intellisense。
或者,你可以使用宏定义(我道歉:)):
#define SPLIT_PATH "/"
PCTSTR rgpszAcceptTypes[] = {_T(“text” SPLIT_PATH “*”), NULL};
...或转义字符串(如评论中建议的@DoomProg)。