C#と同じように、intはCLRタイプであるSystem::Int32のエイリアスです。標準のC++でintを意味するネイティブの「int」を使用する方法はありますか?
3 に答える
C ++/CLIプリミティブ型には二重のアイデンティティがあります。typeキーワードは、コンテキストに応じて、ネイティブC++タイプとCLRタイプの両方に一致します。また、ネイティブ型の変数は、のようにCLR型で使用可能なメソッドを継承しますToString。
ネイティブタイプとマネージタイプの関係を説明するこのブログ記事は非常に役立つと思います:http://blogs.msdn.com/b/branbray/archive/2005/07/20/441099.aspx
受け入れられた答えはOPの質問に答えないと思います。
/clrコンパイラスイッチがオンの場合、intキーワードはSystem::Int32ネイティブではないことを意味します。コンパイラスイッチがオフの場合、
キーワードはネイティブC / C ++を意味し、管理されません。/clrintint
使用System::Int32すると、ネイティブよりもパフォーマンスが大幅に低下しintます(測定できます)。
/clrファイルごとにコンパイラスイッチをオフにすることができ.cppます。これはプロジェクトオプションではなく、変換ユニット(.cppファイル)オプションです。
ファイルを右クリックし、次にプロパティなどを右クリックします。
したがって、.cppファイルにネイティブコードを書き込むことができます(offでコンパイル/clr)。
次に、マネージコードを別のファイル(/clronでコンパイル)に記述して、ネイティブコードを呼び出すことができます。
それらは同じものです。先に進んでint、ネイティブタイプが必要なすべての場所で使用してください。