visual Assurance VS 2008将我的项目视为C++,而不是C++/CLI

visual Ensuring VS 2008 is treating my project as C++ rather than C++/CLI

本文关键字:C++ CLI VS Assurance 2008 项目 我的 visual      更新时间:2023-10-16

我在Visual Studio 2008中使用本机C++。

一位同事写了一个图书馆,他把自己的一个班命名为interface。这里有一个构造函数:

template <typename DtedInterface>
interface<DtedInterface>::interface (
    std::string const& tleFile,
    std::string const& dtedDir,
    dted::DtedLevel const& dtedLevel,
    double sw_latitude,
    double sw_longitude,
    unsigned int rows,
    unsigned int columns )
    : m_impl ( new interface_impl<DtedInterface> ( theFile, dtedDir, dtedLevel, sw_latitude, sw_longitude, rows, columns ) )
  {}

让我担心的是,VisualStudio2008正在突出显示单词interface作为关键字;interface是C++/CLI中的关键字,但不是C++。这看起来不像是有效的C++/CLI,但对于本机C++来说是可以的。

看起来它们编译得很好,但我如何确保Visual Studio将其解释为C++而不是C++/CLI?在某些级别上,VS似乎将其视为C++/CLI。这只是一个关键词突出显示设置吗?

Visual Studio IDE和Visual C++编译器是两个独立的实体。具体来说,它们是两个单独的可执行文件(对于IDE为devenv.exe,对于编译器为cl.exe),作为单独的进程运行。IDE只是生成cl.exe进程来执行实际的编译。

IDE在某个地方有一个关键字列表,只需"告诉"文本编辑器要突出显示哪些单词。它不是超级复杂的;没有必要。编译器拥有最终发言权,而不是语法高亮(或Intellisense)。

只要/clr开关没有传递到cl.exe进程,编译器就会将代码编译为本机C++(这是默认设置)。IDE只是输入源代码的文件路径,编译器作为命令行参数切换到cl.exe进程。语法高亮显示与编译器如何解释代码无关。

如果您使用C++/CLI,代码将拒绝编译,所以只要您推送"build"并且它有效,那么您就知道您使用的是本机。还有用于CLR构建的预定义宏。

如果您确实需要验证它不是在编译托管C++,请查看项目属性,并检查配置属性->常规下的"公共语言运行时支持"设置。对于配置属性->C/C++->常规下的每个文件的属性,请检查"使用公共语言运行时支持编译"设置。如果所有这些都设置为"不支持公共语言运行时",则该项目不是用C++管理的。