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 ++を意味し、管理されません。/clr
int
int
使用System::Int32
すると、ネイティブよりもパフォーマンスが大幅に低下しint
ます(測定できます)。
/clr
ファイルごとにコンパイラスイッチをオフにすることができ.cpp
ます。これはプロジェクトオプションではなく、変換ユニット(.cppファイル)オプションです。
ファイルを右クリックし、次にプロパティなどを右クリックします。
したがって、.cpp
ファイルにネイティブコードを書き込むことができます(offでコンパイル/clr
)。
次に、マネージコードを別のファイル(/clr
onでコンパイル)に記述して、ネイティブコードを呼び出すことができます。
それらは同じものです。先に進んでint
、ネイティブタイプが必要なすべての場所で使用してください。