编译器警告(等级 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
}