硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5066|回复: 13
收起左侧

[开发工具] MDK的AC6里面如何使用关键词__packed,有没有坛友熟悉

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2019-9-8 12:17:36 | 显示全部楼层 |阅读模式
下面这种定义在AC6里面无法正常使用:

IAR和MDK5的AC5都可以正常使用。
  1. /* 定义发送给matlab的数据格式  */
  2. __packed typedef struct
  3. {
  4.         uint16_t data1;
  5.         uint16_t data2;        
  6.         uint16_t data3;        
  7.         uint8_t  data4;        
  8.         uint8_t  data5;
  9.         uint8_t  data6;               
  10.         uint8_t  data7;
  11. }
  12. SENDPARAM_T;
复制代码


警告:
QQ截图20190908123214.jpg

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2019-9-8 12:19:03 | 显示全部楼层
使用关键词__packed,主要涉及到下面的问题

结构体变量占用多少字节问题
http://www.armbbs.cn/forum.php?m ... 9103&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

39

主题

928

回帖

1050

积分

至尊会员

积分
1050
发表于 2019-9-8 12:39:44 | 显示全部楼层
用__packed好像会有编译器兼容问题,我现在一般都用下面这种方式:
#pragma pack (1)
typedef struct
#pragma pack ()
回复

使用道具 举报

0

主题

8

回帖

8

积分

新手上路

积分
8
发表于 2019-9-8 12:41:13 | 显示全部楼层
typedef struct __attribute__((packed))
这样应该可以。
回复

使用道具 举报

25

主题

287

回帖

367

积分

高级会员

积分
367
发表于 2019-9-8 13:24:21 | 显示全部楼层
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2019-9-9 00:17:56 | 显示全部楼层
ghslfgkkl88 发表于 2019-9-8 12:39
用__packed好像会有编译器兼容问题,我现在一般都用下面这种方式:
#pragma pack (1)
typedef struct

谢谢。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2019-9-9 00:18:04 | 显示全部楼层
uranusgin 发表于 2019-9-8 12:41
typedef struct __attribute__((packed))
这样应该可以。

谢谢。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2019-9-9 00:18:10 | 显示全部楼层
爱恋之燕 发表于 2019-9-8 13:24
看这个
https://mp.weixin.qq.com/s?__biz=MzI4MDI4MDE5Ng==&mid=2247485608&idx=1&sn=1ed86f1ea652f63dfd ...

谢谢
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2019-9-9 09:55:29 | 显示全部楼层
AC6因为使用了CLANG,所以这些都有变化,包含文件在<cmsis_armclang.h>
有好多define,直接用就可以

/* CMSIS compiler specific defines */
#ifndef   __ASM
  #define __ASM                                  __asm
#endif
#ifndef   __INLINE
  #define __INLINE                               __inline
#endif
#ifndef   __STATIC_INLINE
  #define __STATIC_INLINE                        static __inline
#endif
#ifndef   __STATIC_FORCEINLINE
  #define __STATIC_FORCEINLINE                   __attribute__((always_inline)) static __inline
#endif
#ifndef   __NO_RETURN
  #define __NO_RETURN                            __attribute__((__noreturn__))
#endif
#ifndef   __USED
  #define __USED                                 __attribute__((used))
#endif
#ifndef   __WEAK
  #define __WEAK                                 __attribute__((weak))
#endif
#ifndef   __PACKED
  #define __PACKED                               __attribute__((packed, aligned(1)))
#endif
#ifndef   __PACKED_STRUCT
  #define __PACKED_STRUCT                        struct __attribute__((packed, aligned(1)))
#endif
#ifndef   __PACKED_UNION
  #define __PACKED_UNION                         union __attribute__((packed, aligned(1)))
#endif
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2019-9-9 09:56:49 | 显示全部楼层
接上面一个,版主可以合并下。
#include <cmsis_compiler.h>
就可以使用了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2019-9-9 11:17:36 | 显示全部楼层
欢乐马 发表于 2019-9-9 09:56
接上面一个,版主可以合并下。
#include
就可以使用了。

非常感谢,还是你这个方便
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2019-9-9 12:27:54 | 显示全部楼层
eric2013 发表于 2019-9-9 11:17
非常感谢,还是你这个方便

一直看大家贡献,有机会贡献点出来,挺好。
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2023-3-29 12:17:22 | 显示全部楼层
欢乐马 发表于 2019-9-9 12:27
一直看大家贡献,有机会贡献点出来,挺好。

没看明白。。。
这个#include <cmsis_compiler.h> 放在哪里?
原有的#define __packed    __attribute__((__packed__)) 应该替换成什么?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
 楼主| 发表于 2023-3-29 12:29:41 | 显示全部楼层
caicaptain2 发表于 2023-3-29 12:17
没看明白。。。
这个#include  放在哪里?
原有的#define __packed    __attribute__((__packed__))  ...

在CMSIS软件包里面,AC6对应的叫cmsis_armclang.h

下载+(1).png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 16:00 , Processed in 0.226982 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表