【发布时间】:2015-09-02 07:17:13
【问题描述】:
我尝试使 BLE121LR 模块与外部 MCU (EFM32) 一起工作。 据我所知,这段代码声明了将结构转换为二进制数据,对吗? 有人可以解释一下如何为其添加 ARM (EFM32) 支持吗? 非常感谢!!
代码:
/* Compability */
#ifndef PACKSTRUCT
#ifdef PACKED
#define PACKSTRUCT(a) a PACKED
#else
/*Default packed configuration*/
#ifdef __GNUC__
#ifdef _WIN32
#define PACKSTRUCT( decl ) decl __attribute__((__packed__,gcc_struct))
#else
#define PACKSTRUCT( decl ) decl __attribute__((__packed__))
#endif
#define ALIGNED __attribute__((aligned(0x4)))
#else //msvc
#define PACKSTRUCT( decl ) __pragma( pack(push, 1) ) decl __pragma( pack(pop) )
#define ALIGNED
#endif
#endif
#endif
【问题讨论】:
-
当您尝试使用 PACKSTRUCT 宏编译代码时,您会遇到哪些编译器错误?你用的是什么编译器?
-
我的 IDE 是 uKeil 5。一些错误:..\bglib\cmd_def.h(846): error: #20: identifier "pack" is undefined PACKSTRUCT(struct ble_msg_system_reset_cmd_t ..\bglib\ cmd_def.h(846): error: #18: expected a ")" PACKSTRUCT(struct ble_msg_system_reset_cmd_t ..\bglib\cmd_def.h(846): error: #79: expected a type specifier
-
IDE 和编译器不是一回事。在我的回答中,我假设您使用的是 Keil 的 armcc。对吗?
-
@Pinetwig 哦,对不起!没错,就是 armcc!
标签: c arm c-preprocessor armcc