编译器警告(等级 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
}
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈