确保VS 2008将我的项目视为C ++而不是C ++ / CLI

时间:2011-06-13 21:53:01

标签: c++ visual-c++ visual-studio-2008 text-editor keyword

我正在使用原生C ++在Visual Studio 2008中工作。

一位同事写了一个图书馆,并命名了他的一个班级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 ) )
  {}

我关注的是Visual Studio 2008将单词interface突出显示为关键字; interface是C ++ / CLI中的关键字,但不是C ++。这看起来不像是有效的C ++ / CLI,但它适用于原生C ++。

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

3 个答案:

答案 0 :(得分:7)

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

IDE有一个关键字列表,它只是告诉文本编辑器要突出显示的单词。它不是超级复杂;它不一定是。编译器有最终决定权,而不是语法高亮显示器(或Intellisense)。

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

答案 1 :(得分:3)

如果您使用的是C ++ / CLI,代码将拒绝编译,因此只要您按下“build”并且它正常工作,那么您就知道自己是原生的。还有用于CLR构建的预定义宏。

答案 2 :(得分:1)

如果您确实需要验证它没有编译托管C ++,请查看项目属性并检查Configuration Properties-&gt; General下的“Common Language Runtime support”设置。对于Configuration Properties-&gt; C / C ++ - &gt; General下的每个文件的属性,请检查“使用公共语言运行时支持进行编译”设置。如果所有这些都设置为“无公共语言运行时支持”,则该项目不是托管C ++。