https://www.gnu.org/software/m68hc11/examples/stdio_8h-source.html
我想知道 _exfun () 在使用 C/C++ 的链接上面是什么意思,它有什么作用?我看过一个代码片段。这是:
#ifndef _EXFUN
# define _EXFUN(N,P) N P
#endif
这段代码有什么作用?如果你这么解释,我会很高兴的。谢谢
https://www.gnu.org/software/m68hc11/examples/stdio_8h-source.html
我想知道 _exfun () 在使用 C/C++ 的链接上面是什么意思,它有什么作用?我看过一个代码片段。这是:
#ifndef _EXFUN
# define _EXFUN(N,P) N P
#endif
这段代码有什么作用?如果你这么解释,我会很高兴的。谢谢
我刚刚测试了它,它链接了两个语句。
_EXFUN(printf("Hello, ");, printf("World!\n");)
显然,这是一种 hack,因此相同的语句将根据_EXFUN
头文件中的实现方式进行不同的预处理。它主要与声明有关。但我不能举出什么时候有用的例子。
在 C/C++ 中,任何以 # 开头的都是预编译器标志。这意味着在编译程序之前,程序会解析以 # 开头的行并执行它们应该执行的任何操作。#if, #ifdef, #ifndef 只包含 if 块中的代码,只要条件满足,这意味着如果条件不满足,则 if 中的代码不会被编译。#define 用于宏定义和简单的文本替换。
似乎在您引用的代码中,如果尚未定义宏,则将定义宏,以便将宏定义下方的代码转换为有效的C语法。我想如果有人想让 stdio 函数做其他事情或以不同的方式定义,这可能会很有用。他们将在包含 stdio.h 之前实现定义_EXFUN。