[英]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.