警告:无法识别的#pragma

时间:2015-04-23 14:08:34

标签: c++ eclipse iar

最近我为Eclipse Luna安装了IAR嵌入式工作台。我以前一直在使用Eclipse,所以我对IDE的布局和不同功能有点熟悉。

(部分偏离主题)我曾经使用GNU CC和DS-5 for Eclipse进行编译,专门用于瑞萨处理器系列。但是,我们的软件部门想要更改编译器。这就是我们为IAR选择的原因。在此之前更改编译器之前,所有内容都已编译好。

当我立即编译我的软件时,它会向我发出警告:Warning[Pe161]: unrecognized #pragma。我以前从未见过这个警告。我是否在安装Eclipse的IAR插件时忽略了一些东西,或者我在这里缺少什么?这可能有助于摆脱稍后出现在同一源文件中的一些恼人的错误。

/* Transfer source buffer : allocated to L1 cache disabled area in large-capacity on-chip RAM space */
//#ifdef __CC_ARM
#pragma arm section zidata = "BSS_DMAC_SAMPLE_INTERNAL_RAM"
static uint8_t dmac_src_data_internalram_1[DMAC_BUFF_SIZE_4096];
static uint8_t dmac_src_data_internalram_2[DMAC_BUFF_SIZE_1024];
static uint8_t dmac_src_data_internalram_3[DMAC_BUFF_SIZE_256];
#pragma arm section zidata
//#endif
#ifdef __ICCARM__
static uint8_t dmac_src_data_internalram_1[DMAC_BUFF_SIZE_4096] @ "BSS_DMAC_SAMPLE_INTERNAL_RAM";
static uint8_t dmac_src_data_internalram_2[DMAC_BUFF_SIZE_1024] @ "BSS_DMAC_SAMPLE_INTERNAL_RAM";
static uint8_t dmac_src_data_internalram_3[DMAC_BUFF_SIZE_256]  @ "BSS_DMAC_SAMPLE_INTERNAL_RAM";
#endif

我确定stackoverflow上的大脑会帮助这个;)

1 个答案:

答案 0 :(得分:0)

[这是事件后的方式,但我在这里写了一个总结的答案,以便人们找到这个问题]

GCC使用“section”pragma将声明放在不同的内存区域; IAR使用专有的“@”语法扩展,如您在示例中的两个声明块中所示,它们是等效的。

正如其中一位评论者指出的那样,你的问题是IAR正在看GCC版本,因为保护它的#ifdef已被注释掉了。