网络编程中的“ #pragma pack”是什么?

问题描述

|
 #pragma pack(push)
 #pragma pack(1)
我下载了一个教程,它在头文件中包含这些行。 如果您能为我提供与此相关的任何教程或参考,我将不胜感激。     

解决方法

        微软的解释: http://msdn.microsoft.com/zh-CN/library/aa273913(v=vs.60).aspx IBM的AIX xlC解释: http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8a.doc%2Fcompiler%2Fref%2Frnpgpack.htm 基本上,它确定存储结构或联合时将使用的字节边界。推送/弹出是一种在堆栈上存储和检索这些设置的方法。 为了将来参考,您可以通过在网络上搜索要查询的关键字来节省一些时间。我要做的就是找到此信息,只是在http://www.google.com上搜索\“ pragma pack \”     ,        所有“ 1”陈述都是特定于供应商的。 这是Microsoft特有的,它描述了编译器可以增加多少个“打包”(以字节为单位)到2个字节,以便更好地对齐。
#pragma pack(push)
会将先前的设置保存到堆栈中。然后,您可以更改特定代码块的打包条件,稍后在
#pragma pack(pop)
上可以恢复以前的设置。     ,        这是MSVC ++专用的包装说明符。您可以从文档中确切地了解它的作用。 打包更改了允许编译器在给定结构(或类)的数据成员之间插入多少填充以保持对齐。在使用网络代码的情况下,可能会使用“ 5”说明符,以便可以将结构强制转换为“ 6”或“ 7”以传递给某个网络API,以一次通过网络发送整个结构。 (请注意,这是不安全的,因为不同的计算机具有不同的对齐和字节顺序规则;仅当电线两端的两台计算机使用相同的硬件类型时,此方法才有效)     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...