|
上次参加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 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|