shanruo 发表于 2011-1-10 09:20:03

【求助】使用RT-Thread,这段代码该如何改写?

上次参加Renesas的展会,拿了块RX的开发板,就想着把rt-thread移植上去,
但是编译器的不同,有一段代码不知道这么改,发上来请教各位兄台。

RX系列对于段的定义是使用#pragma来实现的,
即#pragma section abc
这样的格式,
RT-Thread的预定义是这样
#define SECTION(x) __attribute__((section(x)))
于是,我改成
#define SECTION(x) #pragma (x)
但是编译时下面一段代码展开出错。请问该如何改动呢?

#ifdef FINSH_USING_SYMTAB
   #ifdef FINSH_USING_DESCRIPTION
      #define FINSH_FUNCTION_EXPORT(name, desc)                \
      const char __fsym_##name##_name[] = #name;                \
      const char __fsym_##name##_desc[] = #desc;                \
      const struct finsh_syscall __fsym_##name SECTION("FSymTab")= \
      {                     \
         __fsym_##name##_name,   \
         __fsym_##name##_desc,   \
         (syscall_func)&name      \
      };

      #define FINSH_VAR_EXPORT(name, type, desc)               \
      const char __vsym_##name##_name[] = #name;               \
      const char __vsym_##name##_desc[] = #desc;               \
      const struct finsh_sysvar __vsym_##name SECTION("VSymTab")=   \
      {                     \
         __vsym_##name##_name,   \
         __vsym_##name##_desc,   \
         type,                \
         (void*)&name         \
      };
   #else
      #define FINSH_FUNCTION_EXPORT(name, desc)                \
      const char __fsym_##name##_name[] = #name;                \
      const struct finsh_syscall __fsym_##name SECTION("FSymTab")= \
      {                     \
         __fsym_##name##_name,   \
         (syscall_func)&name      \
      };

      #define FINSH_VAR_EXPORT(name, type, desc)               \
      const char __vsym_##name##_name[] = #name;               \
      const struct finsh_sysvar __vsym_##name SECTION("VSymTab")=   \
      {                     \
         __vsym_##name##_name,   \
         type,                \
         (void*)&name         \
      };
   #endif
#else
   #define FINSH_FUNCTION_EXPORT(name, desc)
   #define FINSH_VAR_EXPORT(name, type, desc)
#endif
页: [1]
查看完整版本: 【求助】使用RT-Thread,这段代码该如何改写?