在 C 中使用 _EXFUN ()

Using _EXFUN () in C

本文关键字:EXFUN      更新时间:2023-10-16

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

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

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

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

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

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

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

宏用于克服主要在 C 标头(.h文件(中的函数定义。这确保了对编译的最佳支持,无论是编译器的平台和版本(C ANSI 兼容还是纯 C(。

然后int _EXFUN(scanf, (const char *, ...));解析为int scanf(const char *, ...)

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

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

相关文章:
  • 没有找到相关文章