我在Visual 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 ) )
{}我担心的是,Visual 2008将单词interface突出显示为关键字;interface是C++/CLI中的关键字,而不是C++。这看起来并不是有效的C++/CLI,但是对于本机C++来说很好。
看起来它们编译得很好,但是我如何确保Visual将其解释为C++而不是C++/CLI呢?在某种程度上,VS似乎认为这是C++/CLI。这仅仅是一个关键字高亮设置吗?
发布于 2011-06-13 21:59:20
和Visual C++编译器是两个独立的实体。具体来说,它们是两个独立的可执行文件( IDE的devenv.exe和编译器的cl.exe ),它们作为单独的进程运行。IDE只是生成cl.exe进程来执行实际的编译。
IDE有一个关键字列表,它简单地告诉文本编辑器要突出显示哪些单词。它不是超级复杂的,它不一定是。编译器有最终的发言权,而不是语法高亮符(或者Intellisense )。
只要/clr switch不被传递给cl.exe进程,编译器就会将代码编译为本机C++ (这是默认设置)。IDE只需输入源代码的文件路径,编译器就会切换为cl.exe进程的命令行参数。语法突出显示与编译器解释代码的方式无关。
发布于 2011-06-13 22:01:38
如果您在C++/CLI中,代码将拒绝编译,因此只要您按下"build“并使其正常工作,您就会知道您是本地的。也有预定义的宏用于CLR构建。
发布于 2011-06-13 22:04:36
如果确实需要验证它没有编译托管C++,请查看项目属性并检查Configuration >General下的“公共语言运行时支持”设置。对于每个文件在Configuration >C/C++->General下的属性,请检查“用公共语言运行时支持编译”设置。如果将所有这些设置为“支持”,则项目不会被管理C++。
https://stackoverflow.com/questions/6336830
复制相似问题