字节对齐__align(),__attribute((aligned (n))),#pragma pack(n)这三个什么区别呀??

2019-10-15 02:17发布

最近想了接一些字节对齐的知识。
1,查了字节对齐的原因--为什么要字节对齐??大多数是说,为了CPU执行效率,这个太宏观了。听起来很泛泛的感觉,如果不是为了CPU的一些效率或者速度的话,执行这些东西干嘛,所以查了很久还是不了解为什么要字节对齐。
2,__align(),__attribute((aligned (n))),#pragma pack(n)看到很多讲解着三个关键字来说字节对齐的,不知道这三者什么区别呢??
3,还有就是哪些关键地方要用到字节对齐呀???好多局部变量,全局变量都没有用。
4,这些对齐是不是和编译器及硬件有关系呀??

好像一口气问了好多问题也,不过我感觉很多人应该和我有同样的疑问吧。有没有好的文档可以了解一下呀??度娘搜的大多数都是讲---结构体用到字节对齐后的大小。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
22条回答
人民币的幻想
1楼-- · 2019-10-15 07:33
http://blog.csdn.net/21aspnet/article/details/6729724
具体的在这,讲的很好
ofourme
2楼-- · 2019-10-15 08:27
 精彩回答 2  元偷偷看……
正点原子
3楼-- · 2019-10-15 12:54
这个问题问的好.
,__align(),__attribute ,#pragma pack
这三个我都用过,但是也不太清楚具体的区别,期待高人讲解下.
Julius007
4楼-- · 2019-10-15 17:24
回复【3楼】正点原子:
---------------------------------
呵呵....最近做项目的时候遇到了,以前学C语言和学习开发板的时候没有注意,现在感觉这些知识很重要。
Julius007
5楼-- · 2019-10-15 21:51
回复【2楼】ofourme:
---------------------------------
O(∩_∩)O哈哈~  谢谢,昨天看了一下,虽然云里雾里的,但是你说的还是蛮有意思的,回答的真是简洁明了。
liyanchao153
6楼-- · 2019-10-15 23:35
回复【2楼】ofourme:
---------------------------------
怎样设置MDK几字节对齐?

一周热门 更多>