在C中使用_EXFUN()

时间:2018-06-07 23:13:49

标签: c++ c

https://www.gnu.org/software/m68hc11/examples/stdio_8h-source.html

我想知道_exfun()在使用C / C ++时上面的链接是什么意思,它做了什么?我见过一段代码片段。这是:

#ifndef _EXFUN
  # define _EXFUN(N,P) N P
#endif

这段代码有什么作用?如果你解释一下,我会很高兴。谢谢

2 个答案:

答案 0 :(得分:0)

我刚测试了它并且它链接了两个语句。

_EXFUN(printf("Hello, ");, printf("World!\n");)

显然,这是一个使用的hack,因此根据头文件中_EXFUN的实现方式,将对预处理相同的语句进行不同的预处理。它主要与声明有关。但我不能举出任何有用的例子。

答案 1 :(得分:-1)

在C / C ++中,以#开头的任何内容都是预编译器标志。这意味着在编译程序之前,程序会解析以#开头的行并执行它们应该执行的操作。 #if,#ifdef,#ifnf只在条件满足时才包含if块中的代码,这意味着如果不满足条件,则不编译if中的代码。 #define用于宏定义和简单文本替换。

似乎在您引用的代码中,如果宏尚未定义,则将定义宏,以便将宏定义下面的代码转换为有效的C语法。我想如果有人想让stdio函数做其他事情或者以不同的方式定义,这可能会有用。在包含stdio.h之前,他们将实现define_EXFUN。