Visual c++ 使用`\u\u函数时出现Intellisense错误W__`

Visual c++ 使用`\u\u函数时出现Intellisense错误W__`,visual-c++,macros,intellisense,Visual C++,Macros,Intellisense,我正在使用\uuuuuu行、\uuuu文件和\uuuu函数宏来帮助编写和实现自定义异常类。众所周知,它们会自动提供代码中调用它们的位置的行号、源文件名和函数名。此外,由于我只使用Unicode,我必须使用扩展为字符串结果的…W宽字符版本 例如: throw CEString(CEString::ERROR_INDEX_OUT_OF_BOUNDS, __LINE__, L"End index is smaller than start

我正在使用
\uuuuuu行
\uuuu文件
\uuuu函数
宏来帮助编写和实现自定义异常类。众所周知,它们会自动提供代码中调用它们的位置的行号、源文件名和函数名。此外,由于我只使用Unicode,我必须使用扩展为字符串结果的…W宽字符版本

例如:

throw CEString(CEString::ERROR_INDEX_OUT_OF_BOUNDS,
                __LINE__,
                L"End index is smaller than start index",
                L"Index Out of Bounds",
                __FILEW__,
                __FUNCTIONW__,
                L"CString");
其中,
CEString
是一个自定义异常类,其构造函数采用两个整数参数和五个简单的宽字符串来定位和描述引发它的错误

我正确地包含了头文件
iostream
new
crtdefs.h
。从文档来看,后者不应该是严格必要的,但由于宏实际上是在这里定义的,所以我还是将其包括在内。但是,VS2013中的Intellisense错误检查器突出显示了我将
\uuuu函数w\uuu
宏用作错误。它返回以下通知:

错误:标识符L__函数__未定义

…真奇怪

这变得更加奇怪的地方是;程序本身——尽管有这个错误警告——编译得很愉快,而且运行得更平稳。这个被认为有争议的宏创建了它的宽字符函数名扩展,没有任何抱怨

因此,这显然是Intellisense的问题,而不是代码或标头的问题。你们有谁知道会出什么问题吗

这可能是最接近前面的问题:


然而,与本·沃伊特不同的是,我发现这个程序实际上是链接和运行的!Intellisense显然存在问题。

此错误已向公众公布

即使在VS2010(自定义或内置)中,Intellisense通常似乎也存在宏问题

现在忽略这个错误应该没问题


还可以让您了解我的意思。

作为一种解决方法,您可以定义以下内容(最好在PCH标题中)


#如果(_MSC_VER>=1800&&u MSC_VER这是。将其添加为答案@Hans Passant,我将勾选它!您给出的链接似乎是确定的!
#if (_MSC_VER >= 1800 && _MSC_VER <= 1899)
#define L__FUNCTION__ nullptr
#define L__FILE__     nullptr
#endif