我们在C程序中包含像
当我们打开这些头文件(例如stdio.h)时,它们只包含函数原型,我看不到函数定义。我看到的是这样的东西:
(来源:https://www.gnu.org/software/m68hc11/examples/stdio_8h-source.html)
然后有人告诉我,也许函数定义必须在我们检查的头文件中包含的头文件之一中,所以我相信了一段时间。从那时起,我查看了很多头文件,但从未找到单个函数定义。
最近我读到内置函数的函数定义不是直接提供的,而是以某种特殊方式给出的。这是真的吗?如果是这样,内置函数的函数定义存储在哪里?它们如何被引入我们的程序,因为头文件只有它们的原型?
编辑:请注意,我只是展示了头文件的内容作为一个示例。我的问题不是关于_EXFUN宏的。
stdio.h
这样的头文件,以使用内置的库函数。我曾经认为这些头文件包含了我们在程序中可能使用的内置函数的函数定义。但很快发现并非如此。当我们打开这些头文件(例如stdio.h)时,它们只包含函数原型,我看不到函数定义。我看到的是这样的东西:
00133 int _EXFUN(printf, (const char *, ...));
00134 int _EXFUN(scanf, (const char *, ...));
00135 int _EXFUN(sscanf, (const char *, const char *, ...));
00136 int _EXFUN(vfprintf, (FILE *, const char *, __VALIST));
00137 int _EXFUN(vprintf, (const char *, __VALIST));
00138 int _EXFUN(vsprintf, (char *, const char *, __VALIST));
00139 int _EXFUN(vsnprintf, (char *, size_t, const char *, __VALIST));
00140 int _EXFUN(fgetc, (FILE *));
00141 char * _EXFUN(fgets, (char *, int, FILE *));
00142 int _EXFUN(fputc, (int, FILE *));
00143 int _EXFUN(fputs, (const char *, FILE *));
00144 int _EXFUN(getc, (FILE *));
00145 int _EXFUN(getchar, (void));
00146 char * _EXFUN(gets, (char *));
00147 int _EXFUN(putc, (int, FILE *));
00148 int _EXFUN(putchar, (int));
00149 int _EXFUN(puts, (const char *));`
(来源:https://www.gnu.org/software/m68hc11/examples/stdio_8h-source.html)
然后有人告诉我,也许函数定义必须在我们检查的头文件中包含的头文件之一中,所以我相信了一段时间。从那时起,我查看了很多头文件,但从未找到单个函数定义。
最近我读到内置函数的函数定义不是直接提供的,而是以某种特殊方式给出的。这是真的吗?如果是这样,内置函数的函数定义存储在哪里?它们如何被引入我们的程序,因为头文件只有它们的原型?
编辑:请注意,我只是展示了头文件的内容作为一个示例。我的问题不是关于_EXFUN宏的。