【求助】使用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]