删除命令我上定义一个函数时,有时会使用寻找预处理命令代码
static inline void myfunc(...)
一个C库工作。
现在我尝试将此端口移植到不支持“静态内联”的旧C编译器。这是密件抄送 - 布鲁斯的C编译器。
我可以在替代
static inline void
与
void
在包括这个头文件的所有程序
头文件使用一个命令?
删除命令我上定义一个函数时,有时会使用寻找预处理命令代码
static inline void myfunc(...)
一个C库工作。
现在我尝试将此端口移植到不支持“静态内联”的旧C编译器。这是密件抄送 - 布鲁斯的C编译器。
我可以在替代
static inline void
与
void
在包括这个头文件的所有程序
头文件使用一个命令?
当您必须针对不支持某些功能的编译器时,通常在您的代码中使用宏而不是试图用宏修改您的代码。
在这种情况下,你可以在编译器相关的方式定义STATIC_INLINE
宏,并使用它像这样:
#ifdef BCC_COMPILER
#define STATIC_INLINE
#else
#define STATIC_INLINE static inline
#endif
...
STATIC_INLINE void myfunc(...)
这会起作用,但我已经在代码中有很多ifdef了。我希望用一个#define命令或类似的命令在一个地方定义它会更短。 – Georg
我现在明白了,是的,你可以把这段代码放到头文件中。是否有可能让预处理器用空字符串替换“静态内联”?然后我不必更改每个程序代码。 – Georg
@Georg不幸的是,预处理器可以替代一个令牌,而不是一对彼此相邻的令牌。这就是为什么我见过的许多库使用这个技巧,尽管它使得其余的代码不易读。 – dasblinkenlight
我想你可以添加一个void的空定义:#define void。 –
您确定要重新定义'void'关键字而不是'inline'关键字吗?另外请查找并阅读*条件编译*。 –
对不起,这是一个错字 - 我想用“void”替换“static inline void” – Georg