我可以在C ++ / CLI中使用本机原语类型吗?

时间:2013-03-07 05:38:01

标签: c++-cli

与C#相同,int是System :: Int32的别名,它是CLR类型。有没有办法可以使用原生的“int”,这意味着标准c ++中的int?

3 个答案:

答案 0 :(得分:3)

C ++ / CLI原语类型具有双重身份。类型关键字匹配 本机C ++类型和CLR类型,具体取决于上下文。具有本机类型的变量将继承CLR类型上可用的方法,如ToString

我认为这篇博客文章解释了原生类型和托管类型之间的关系非常有用:http://blogs.msdn.com/b/branbray/archive/2005/07/20/441099.aspx

答案 1 :(得分:1)

我认为接受的答案没有回答OP的问题。

如果启用了/clr编译器开关,则int关键字表示System::Int32,它不是原生的。
如果/clr编译器开关关闭,则int关键字表示本机C / C ++ int,则不会对其进行管理。

使用System::Int32意味着对原生int造成重大的性能损失(您可以对其进行衡量)。

您可以关闭每个/clr文件的.cpp编译器开关。它不是Project选项,它是翻译单元(.cpp文件)选项 右键单击文件,然后单击属性等...

因此,您可以在.cpp文件中编写一些本机代码(使用/clr编译关闭)。
然后,您可以在另一个文件中编写托管代码(使用/clr编译)并调用本机代码。

答案 2 :(得分:-1)

它们是相同的,继续使用int到任何你想要的本机类型。