【发布时间】:2017-09-25 08:07:50
【问题描述】:
我刚刚开始为 RL78 编译器使用 Vectorcast 和 IAR。我想使用 IAR Compiler for RL78 Microcontroller 在 vectorcast 中构建环境。
用于测试的代码已在 RL78 的 IAR 嵌入式工作台中成功编译。
在为模块构建 vectorcast 环境时遇到以下错误。
错误:
40_MCAL\Memory\FDL\fdl_types.h", line 133: error: division by zero enum { R_FDLT02_ASSERT_LINE_133 = 1/(! !(sizeof(fdl_u16)==2)) }; ^ 40_MCAL\Memory\FDL\fdl_types.h", line 137: error: division by zero enum { R_FDLT02_ASSERT_LINE_137 = 1/(! !(sizeof(fdl_command_t)==1)) }; ^ 40_MCAL\Memory\FDL\fdl_types.h", line 138: error: division by zero enum { R_FDLT02_ASSERT_LINE_138 = 1/(! !(sizeof(fdl_status_t)==1)) }; ^ 40_MCAL\Memory\FDL\fdl_types.h", line 141: error: division by zero enum { R_FDLT02_ASSERT_LINE_141 = 1/(! !(sizeof(fdl_request_t)==8)) }; ^ 40_MCAL\Memory\FDL\fdl_types.h", line 142: error: division by zero enum { R_FDLT02_ASSERT_LINE_142 = 1/(! !(sizeof(fdl_descriptor_t)==10)) }; ^ 5 errors detected in the compilation of "Flash.c".
源代码如下:
# define R_FDLT02_ASSERT_CONCAT_(a, b) a##b
#define R_FDLT02_ASSERT_CONCAT(a, b) R_FDLT02_ASSERT_CONCAT_(a, b)
#define R_FDLT02_STATIC_ASSERT(e) enum { R_FDLT02_ASSERT_CONCAT
(R_FDLT02_ASSERT_LINE_, __LINE__) = 1/(!!(e)) }
/* assertion if unsigned data type size is not correct, please evaluate compiler settings for integer types */
R_FDLT02_STATIC_ASSERT(sizeof(fdl_u08)==1);
R_FDLT02_STATIC_ASSERT(sizeof(fdl_u16)==2);
R_FDLT02_STATIC_ASSERT(sizeof(fdl_u32)==4);
/* assertion if enumeration type size is not correct, please evaluate compiler settings for enumeration types */
R_FDLT02_STATIC_ASSERT(sizeof(fdl_command_t)==1);
R_FDLT02_STATIC_ASSERT(sizeof(fdl_status_t)==1);
/* assertion if structure type size is not correct, please evaluate compiler settings for structure types */
R_FDLT02_STATIC_ASSERT(sizeof(fdl_request_t)==8);
R_FDLT02_STATIC_ASSERT(sizeof(fdl_descriptor_t)==10);
【问题讨论】:
-
如果你能分享产生错误的代码会容易得多。
-
这些似乎是静态断言。他们的工作是确保您不会意外编译行为不正确的代码。也许您需要将此库(?)移植到您的编译器系统。
-
/* 断言如果无符号数据类型大小不正确,请评估整数类型的编译器设置 */ tdl_u08 需要为 1 字节,但在您的系统上显然不是。 u16 2 和 u32 4 同上。您尝试过哪些编译器设置来解决此问题?
-
作为商业产品,我想供应商会提供技术支持。甚至是文档?