代码如下:
typedef struct tag_bmu_get_buff_num_test {
uint32_t buff_type;
uint32_t master_type;
uint16_t free_num;
uint16_t used_num;
uint16_t threshold;
} bmu_get_buff_num_test;
#define BMU_REG_BASE_TEST 0x12000000
#define reg_dlnk_num_test (*(uint16_t *)(BMU_REG_BASE_TEST+0x80))
bmu_get_buff_num_test g_buff_num_table_test[] = {
{0, 0, reg_dlnk_num_test, reg_dlnk_num_test, reg_dlnk_num_test},
};
在ARM compiler 5(DS-5 built-in)的编译器中,报编译错误:
但是相同的代码移植到Mingw环境编译,可以正常通过:
只是编译脚本中执行目标文件./helloworld_dt.exe会报Segmentation fault,因为这个0x12000000地址是嵌入式ARM环境中的ram地址,在windows的Mingw环境中并不存在。
单独去执行,没有报错,为什么?