关于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文件貌似也找不到对这三个宏的定义
应该怎么样才能找到?
...全文
349 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
  • 打赏
  • 举报
回复
估计封装了.
源码链接: https://pan.quark.cn/s/651b74ed6067 《MQL4中文帮助手册》是一部详尽阐述MetaQuotes Language 4(MQL4)编程语言的参考书籍,其核心目标在于协助用户掌握并运用MQL4进行金融市场的自动化交易系统构建。MQL4作为MetaTrader 4交易平台的核心编程语言,赋予了交易者开发自定义指标、Expert Advisors(EA智能交易系统)以及脚本的能力。 ### MQL4基础知识 1. **Syntax 语法**:MQL4的语法规则与C/C++语言展现出相似性,涵盖了变量声明、函数调用、条件判断、循环机制等核心要素。熟练掌握并合理运用语法是开发高效MQL4代码的先决条件。 2. **Comments 注释**:在MQL4编程环境中,单行注释采用两个斜线(//)进行标识,而多行注释则通过/* 和 */进行界定。注释的主要功能在于阐释代码用途,从而提升代码的可读性与可维护性。 3. **Identifiers 标识符**:标识符是程序中用于命名变量、函数、类等元素的字符序列。其命名规则要求必须以字母或下划线作为开头,后续可包含字母、数字或下划线组合。MQL4语言对大小写敏感,因此`MyVariable`与`myvariable`被视为两个独立的标识符。 4. **Reserved words 保留字**:保留字是MQL4语言中预先设定的特殊词汇,例如`int`, `bool`, `double`, `if`, `else`, `for`, `while`等,这些词汇不可用作自定义标识符,以防止与语言关键字产生冲突。 5. **Data types 数据类型**:MQL4支持多元化的数据类型,包括...

70,040

社区成员

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

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