-2

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

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

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

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

4

2 回答 2

0

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

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

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

于 2018-06-07T23:23:29.870 回答
-1

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

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

于 2018-06-07T23:23:30.193 回答