错误:在宏中使用时不允许使用节属性

时间:2019-06-08 08:14:14

标签: c gcc memory linker

我正在尝试将以下宏的每个声明移到另一个内存段。没有section属性,它可以正常工作。关于为什么我不能在这里使用它以及如何使它工作的任何想法?

 #define RINGBUFFER_DECLARE_MEMB(var, sz) \
                    uint8_t var ## __buf[sz] __attribute__((section(".rambss"))); \                                                             
                    struct ring_buffer var __attribute__((section(".rambss")))
  

device.h:91:29:错误:不允许段属性   '__iso_buf__buf'        RINGBUFFER_DECLARE_MEMB(__ iso_buf,BUF_SIZE_ISOLATED);

1 个答案:

答案 0 :(得分:0)

愚蠢的我,问题在于宏用于结构定义:

   struct a { 
      RINGBUFFER_DECLARE_MEMB(umama, 3);     
   };

那当然是不允许的