为啥 Visual Studio 2008 在 C++ 代码中突出显示 internal 作为关键字?

Posted

技术标签:

【中文标题】为啥 Visual Studio 2008 在 C++ 代码中突出显示 internal 作为关键字?【英文标题】:Why does Visual Studio 2008 highlight internal as a keyword in C++ code?为什么 Visual Studio 2008 在 C++ 代码中突出显示 internal 作为关键字? 【发布时间】:2009-08-24 07:28:13 【问题描述】:

我正在将 VC++7 代码库移植到 VC++9。令人惊讶的是,Visual Studio 2008 将 internal 突出显示为 C++ 代码中的关键字,但看起来它并没有真正被这样对待。

这是什么 - VS 中的一个错误,我尚未找到的环境设置,或者表明我将不再被允许在某些即将发布的版本中使用 internal 作为常规标识符?在这种情况下,我最好的做法是什么?

【问题讨论】:

【参考方案1】:

我不确定,但我认为内部说明符可用于 C++/CLI 项目。因此,由于非 C++/CLI 项目和 C++/CLI 项目之间只有一个项目设置的差异,因此,它可能是因为这个原因而被突出显示的。

[编辑] 刚刚检查,内部 IS 是 C++/CLI 中的一个关键字,并生成类似于 C# 项目生成的 IL。所以,我最初的想法似乎是正确的。它似乎是来自 Microsoft 的适用于所有 C++ 风格的解析器

【讨论】:

我认为它不是“一个适用于所有 C 风格的解析器”,而是在用于 .NET 的 C++ 中引入了一些旧 C++ 中没有的 .NET 机制,并且出于显而易见的原因,它们与 C# 语义相同。【参考方案2】:

忽略它。 “问题”只是并非 Visual Studio 的所有部分都能正确区分 C++ 和 C++/CLI。因此,即使在纯原生 C++ 中,某些 C++/CLI 关键字也会突出显示。 (array 是另一个)。

这只影响语法高亮,而不影响实际的编译器。

因此,避免使用这些词的唯一原因是,如果您 1) 发现错误的语法突出显示太烦人,或者 2) 计划将您的应用程序移植到 C++/CLI。

【讨论】:

【参考方案3】:

问题在于用于突出显示的解析器不是真正的 C++ 解析器之一。 “之一”,因为 VC++、C++/Za 和 C++/CLI 是具有不同解析器的三种方言。 VS 漂亮的打印机使用了一个常见的解析器,但它并不总是正确的。例如。它有一组关键字,因此它总是假定“内部”是一个关键字。

【讨论】:

以上是关于为啥 Visual Studio 2008 在 C++ 代码中突出显示 internal 作为关键字?的主要内容,如果未能解决你的问题,请参考以下文章

visual studio 2008的ISO文件有3.70GB,为啥有这么大?

为啥使用microsoft visual studio2008时反应缓慢?????????????? 急!!!!!!!!!!

为啥我在visual studio 2008 VC++中运行一个Win32控制台应用程序后,弹出一个“没有找到MSVCP90D.dll”?

为啥 Visual Studio 2008 在 C++ 代码中突出显示 internal 作为关键字?

为啥这样的 penAL 代码在 Visual Studio 2008 中会出现这样的错误?

为啥在visual studio 2008中使用DWORD添加头文件windef.h不行,一定要windows.h。