Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 正在查找预处理器命令以删除代码中的命令_C_C Preprocessor_Bcc Compiler - Fatal编程技术网

C 正在查找预处理器命令以删除代码中的命令

C 正在查找预处理器命令以删除代码中的命令,c,c-preprocessor,bcc-compiler,C,C Preprocessor,Bcc Compiler,我正在开发一个C库,它有时使用 static inline void myfunc(...) 定义函数时 现在,我尝试将其移植到不支持“静态内联”的旧C编译器。这是bcc-Bruce的C编译器 我可以在头文件中使用命令替换 static inline void 与 在包含此头文件的所有程序中?当您必须针对不支持某些功能的编译器时,通常在代码中使用宏,而不是试图用宏修改代码 在这种情况下,您可以以依赖于编译器的方式定义STATIC\u INLINE宏,并按如下方式使用它: #ifdef BC

我正在开发一个C库,它有时使用

 static inline void myfunc(...)
定义函数时

现在,我尝试将其移植到不支持“静态内联”的旧C编译器。这是bcc-Bruce的C编译器

我可以在头文件中使用命令替换

static inline void


在包含此头文件的所有程序中?

当您必须针对不支持某些功能的编译器时,通常在代码中使用宏,而不是试图用宏修改代码

在这种情况下,您可以以依赖于编译器的方式定义
STATIC\u INLINE
宏,并按如下方式使用它:

#ifdef BCC_COMPILER
#define STATIC_INLINE
#else
#define STATIC_INLINE static inline
#endif
...
STATIC_INLINE void myfunc(...)

非常感谢大家的帮助。我必须报告在他的报告中给出了对我有用的答案:


显然,bcc接受
static void
但不接受
static inline void

我认为您可以添加一个空的void定义:#定义void。您确定要重新定义
void
关键字而不是
inline
关键字吗?另外,请查看搜索和阅读有关条件编译的内容。很抱歉,这是一个输入错误-我想用“void”替换“static inline void”,这将起作用,但我已经在代码中包含了很多ifdef。我希望用#define命令或类似命令在一个地方定义它会更短。我现在明白了,是的,您可以将此代码放入头文件中。可以让预处理器用空字符串替换“静态内联”吗?这样我就不必更改每一个程序代码了。@Georg不幸的是,预处理器可以替换单个标记,而不是相邻出现的一对标记。这就是为什么我见过很多库使用这个技巧,尽管它会降低其余代码的可读性。你真的想从
静态内联
中丢失
静态
?您突然暴露了所有函数,并且容易出现多个定义错误。如果编译器不支持
内联
#define inline/*nothing*/
可能更好。(当然,如果以前是
静态内联
的函数现在只是
静态
,但没有使用,您可能会收到关于未使用函数的警告,或者因为它们或两者而遭受代码膨胀。)一种更简单的表达方式是“Bcc不支持
内联
函数”。即使在C90编译器中,也需要对
静态
无效
的支持<代码>内联已添加到C99。
#ifdef BCC_COMPILER
#define STATIC_INLINE
#else
#define STATIC_INLINE static inline
#endif
...
STATIC_INLINE void myfunc(...)
 #define inline