C++ cli 在CPP/CLI中混淆本机和托管?
如果我使用/clr模式编译具有以下内容的代码:C++ cli 在CPP/CLI中混淆本机和托管?,c++-cli,C++ Cli,如果我使用/clr模式编译具有以下内容的代码: int x = 3; char ch='A'; int arr[]="Hi"; array<int>^ ManArr1={44}; array<int>^ ManArr2= gcnew array<int> {44}; intx=3; char ch='A'; int arr[]=“Hi”; 数组^ManArr1={44}; 数组^ManArr2=gcnew数组{44}; 我现在的问题是: 类型int是否映射
int x = 3;
char ch='A';
int arr[]="Hi";
array<int>^ ManArr1={44};
array<int>^ ManArr2= gcnew array<int> {44};
intx=3;
char ch='A';
int arr[]=“Hi”;
数组^ManArr1={44};
数组^ManArr2=gcnew数组{44};
我现在的问题是:
类型int
是否映射到System::Int32
??那么charch
呢?它们是本机类型还是托管类型?哪里将被处决!通过MSIL与否
我们看到intarr[]
是一个本机数组,这是否意味着它将在MSIL之外执行
最后一个问题,对于托管阵列ManArr1
和ManArr2
两个初始化之间的区别是什么???关于“对于托管阵列ManArr1和ManArr2,两个初始化之间的区别是什么?”
没有功能上的区别,一个是另一个的缩写。关于“对于托管阵列ManArr1和ManArr2,两个初始化之间的区别是什么?”
没有功能上的区别,一个是另一个的缩写。使用
/clr
编译时,除非使用#pragma managed(off)
或#pragma unmanaged
相当于int
System::Int32
相当于char
(而不是System::SByte
!)System::char
- 这两种类型都是“原始的”。托管代码将它们视为托管类型,而本机代码将它们视为本机类型
- 本机数组将使用无法验证的MSIL(例如,与C#指针相同)
/clr
编译时,除非使用#pragma managed(off)
或#pragma unmanaged
相当于int
System::Int32
相当于char
(而不是System::SByte
!)System::char
- 这两种类型都是“原始的”。托管代码将它们视为托管类型,而本机代码将它们视为本机类型
- 本机数组将使用无法验证的MSIL(例如,与C#指针相同)