在我的系统(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/6712493/