在我的系统(Mac OS 10.6)上,/usr/include/stdarg.h是:

/* This file is public domain.  */
/* GCC uses its own copy of this header */
#if defined(__GNUC__)
#include_next <stdarg.h>
#elif defined(__MWERKS__)
#include "mw_stdarg.h"
#else
#error "This header only supports __MWERKS__."
#endif

那么,如果GCC使用自己的stdarg.h副本,它在哪里?我什么都不知道#include_next的意思是(也许是GCC扩展名?),也不是关于
“MWERKS”(编译器?)。

最佳答案

<stdarg.h>甚至比大多数C库 header 都更多,它往往是非常特定于编译器的。这样,OS X上的每个编译器都有其自己的stdarg.h实现,可在特定于编译器的位置找到(该位置包含在该编译器的默认搜索路径中)。编译器找到通用的stdarg.h,它基本上告诉它“继续看”(通过扩展名#include_next),然后找到特定于编译器的实现。
__MWERKS__指向PPC的旧编译器“MetroWerks CodeWarrior”。

关于c - stdarg.h在哪里?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14150214/

10-11 12:29