关于llvm-gcc源代码中的stdarg.h文件

蜗牛1024 2011-07-13 02:50:41
现在在看可变参数函数 在网上嗖的资料:是VC++6.0 中stdarg.h里的代码
  
1. typedef char * va_list;
2. #define _INTSIZEOF(n) ((sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
3. #define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )
4. #define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
5. #define va_end(ap) ( ap = (va_list)0 )

然后我想看一下llvm中是如何实现这三个宏的 找到stdarg.h后:
#define va_start(v,l)	__builtin_va_start(v,l)
#define va_end(v) __builtin_va_end(v)
#define va_arg(v,l) __builtin_va_arg(v,l)

只有这些 没有具体到定义 ;去搜_builtin文件貌似也找不到对这三个宏的定义
应该怎么样才能找到?
...全文
243 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
大道曙光 2011-07-13
  • 打赏
  • 举报
回复
mark 来着
xunxun 2011-07-13
  • 打赏
  • 举报
回复
这是因为gcc需要考虑跨平台处理,而且头文件和函数库并不是由gcc解释而是由各自平台的CRT维护。不像vc写死就完事了。
FrankHB1989 2011-07-13
  • 打赏
  • 举报
回复
__builtin开头的貌似都是前端的扩展关键字……找不到文件正常。
jackyjkchen 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 littelsnail 的回复:]

引用 7 楼 xunxun1982 的回复:

大凡builtin开头的你找不到具体的表示的,这个在llvm/gcc中不同情形有不同的处理。
有的EXPAND了,有的optimize了。

这个我不是太懂 它自己肯定得有具体的实现吧 不然怎么编译 但是为什么找不到呢?即使打不开看不到起码该有个文件吧
[/Quote]

mac底下也有动态库、静态库的概念吧,可能他发布给你用的是二进制版本。

开源意味着源码你可以找到,但但不意味着你用的所有东西都是源码
蜗牛1024 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xunxun1982 的回复:]

大凡builtin开头的你找不到具体的表示的,这个在llvm/gcc中不同情形有不同的处理。
有的EXPAND了,有的optimize了。
[/Quote]
这个我不是太懂 它自己肯定得有具体的实现吧 不然怎么编译 但是为什么找不到呢?即使打不开看不到起码该有个文件吧
jackyjkchen 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 adlay 的回复:]

宏不可能封装到看不到定义的.
函数还有可能封装了不提供源代码.
[/Quote]

也许封装到最低层就是个函数呢……
蜗牛1024 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 adlay 的回复:]

1. 一步一步的在 stdarg.h 包含的头文件里面找吧.
2. 直接按文件内容搜索呀
[/Quote]
刚刚都试过了 一一打开都没有看到具体到定义
xunxun 2011-07-13
  • 打赏
  • 举报
回复
大凡builtin开头的你找不到具体的表示的,这个在llvm/gcc中不同情形有不同的处理。
有的EXPAND了,有的optimize了。
www_adintr_com 2011-07-13
  • 打赏
  • 举报
回复
宏不可能封装到看不到定义的.
函数还有可能封装了不提供源代码.
www_adintr_com 2011-07-13
  • 打赏
  • 举报
回复
1. 一步一步的在 stdarg.h 包含的头文件里面找吧.
2. 直接按文件内容搜索呀
蜗牛1024 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 abao623660072 的回复:]

如果是封装了就找不到.
[/Quote]
这个我不是太懂 llvm它不是一个开源的软件吗? 还是就是封装后它是以哪种文件格式存在的?
金刚葫芦娃 2011-07-13
  • 打赏
  • 举报
回复
如果是封装了就找不到.
蜗牛1024 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 abao623660072 的回复:]

估计封装了.
[/Quote]
怎么找到呢?
金刚葫芦娃 2011-07-13
  • 打赏
  • 举报
回复
估计封装了.

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧