簡體   English   中英

將字符指針轉換為 long

[英]Cast char pointer to long

首先請原諒我有限的 c 知識,但是如何在 32 位和 64 位平台上將 char 指針轉換為 long ? 這段代碼在 Visual Studio 2015 中給了我一個編譯器警告 C4311

char *c;
long l;
l = (long)(c);

謝謝

編輯

錯誤代碼是“類型轉換”:從“char *”到“long”的指針截斷能否讓我知道他們為什么投票?

如果可以避免,請不要這樣做。

C99(和更新版本)支持名為uintptr_t 它是一種能夠保存指針值的整數類型。 有關更多信息,請參閱stddef.h

不知道 Visual Studio 完全支持 C99。 因此,您可能無法使用它,但值得一試。

char* c = <some value>;
uintptr_t ptr = (uintptr_t)c;

如果您將 c 源文件編譯為 C++ 源(使用/TC編譯器選項),您應該能夠使用它。

將指針轉換為整數的目的是什么? 您可以使用聯合或結構,或者可能使用 void *。

Microsoft 編譯環境默認為 LLP64,其中 long 為 32 位寬,如果您的指針為 64 位寬,則可能太窄了。 -> https://msdn.microsoft.com/en-us/library/cc953fe1.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM