編譯器警告 (層級 1) C4311
'variable' : 指標從 'type' 到 'type' 截斷
此警告會偵測 64 位元指標截斷問題。 例如,如果程式碼是針對 64 位元架構而編譯的,若指派給 int
(32 位元),指標 (64 位元) 的值將會被截斷。 如需詳細資訊,請參閱 使用指標的規則。
如需警告 C4311 常見原因的其他資訊,請參閱 常見編譯程序錯誤。
下列程式碼範例會在針對 64 位元目標而編譯時產生 C4311,並接著示範如何修正此問題:
// C4311.cpp
// compile by using: cl /W1 C4311.cpp
int main() {
void* p = &p;
unsigned int i = (unsigned int) p; // C4311 for 64-bit targets
unsigned long long j = (unsigned long long) p; // OK
}