在用於MSVC的C++編譯器中,long
和int
具有相同的大小。我不確定你是否想到long long
,它表示MSVC中的一個64位有符號整數。如果你的意思只是long
雖然,那麼在.Net內Int32
應該沒問題。
要想獲得真正的安全,你可以使用提供的宏符號的32位整數:
#include <cstdint>
MyClass^ MyMethod(... params ..., array<int32_t>^ myParam) { ...
或者更好的是,使用.NET定義類型爲亞歷山大Ç建議:
MyClass^ MyMethod(... params ..., array<System::Int32>^ myParam) { ...
需要注意的最重要的事情是,在當前的MSVC C++編譯器中,int
,long
,int32_t
和System::Int32
的大小完全相同。使用哪個並不重要,但int32_t
和System::Int32
是最安全的選擇。
微軟可以在以後更改他們的long
爲32位大小。如果發生這種情況,那麼您可以用新的編譯器重新編譯這個相同的代碼,而不會產生任何問題。
關於每個數據類型的大小,該標準要求int
和long
至少4個字節大。在某些編譯器上,您可能會發現sizeof(long) != sizeof(int)
。出於這個原因,如果你想確保你使用的是整數4個字節大的整數,你應該使用提供的頭部來保證所需的大小。
欲瞭解更多詳情請參閱這裏:http://en.wikipedia.org/wiki/Long_integer。文章包含了相關的標準鏈接。
我認爲C++中的一個長是一個有符號的4字節整數?這與.Net Int32相同。 –
@chibacity:是的。這也是依賴於實現的東西。 –
@飛利浦,你錯過了一個絕好的機會不要發佈! – Blindy