我剛開始使用Vectorcast和IAR編譯RL78。我想使用IAR編譯器爲RL78微控制器構建vectorcast環境。這是用於測試使用IAR編譯器進行RL78的矢量直播
代碼編譯成功在RL78的IAR Embedded Workbench。
我對着下面的錯誤,而在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);
如果您分享產生錯誤的代碼,那將會容易得多。 – norok2
這些似乎是靜態斷言。他們的工作是確保您不會意外編譯錯誤行爲的代碼。也許你需要將這個庫(?)移植到你的編譯器系統中。 – user694733
/*斷言如果無符號數據類型大小不正確,請評估整數類型的編譯器設置*/tdl_u08需要爲1個字節,但在系統上顯然不是。同上u16 2和u32 4.您試圖解決這個問題的哪些編譯器設置? – Ross