Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我在msdn中阅读了这篇文章,我想知道为什么有一个内部编译器堆栈持有对齐?我的意思是只有 5 个值可以设置为包装对齐,为什么要存储它们?甚至可以选择分配标识符。你为什么要那样做?只是好奇。
标题。考虑以下 .cpp 文件:
#pragma pack(16) #include <stdlib.h>
标<stdlib.h>头定义了受 影响的类型#pragma pack,并且#pragma pack会破坏这些类型的定义,导致未定义的行为和难以诊断的运行时错误。
<stdlib.h>
#pragma pack
我们<stdlib.h>通过推送包装,将其重置为众所周知的包装,并在文件末尾弹出原始包装来防止这种情况。其他库和 SDK 的标头可以做类似的事情来防御这种情况。