| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 700 人关注过本帖
标题:参数传递问题+编译器大概工作过程
只看楼主 加入收藏
自由呼吸
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2006-11-11
收藏
 问题点数:0 回复次数:6 
参数传递问题+编译器大概工作过程

参数传递问题+编译器大概工作过程
以下面的程序片段为例,我的问题在注释里,请走过路过的朋友帮帮忙解决下.
......
char *endptr;//声名并定义变量,分配随机内存?
char *string="123.456e-1";//声明并定义初始化变量,并分配内存?
long double _strtold(const char *string,char **endptr);//声明函数,编译器对它做什么处理?在一张表格中注册?
_strtold(string,&endptr);//过程如何?这样吗:函数过程加载到内存(是加载到上条指令的接下来的地址还是别的地址,然后跳转过去?),首先形参初始化,然后处理过程?这里又有个问题,如果形参的第一个参数无const修饰,那么编译器如何区分形参同名的实参呢?难道一个作用域一张什么什么表格?

编译器的大概处理过程怎么样的?以此程序片段,TC 2为例.编译器要巡检几次?每次都做什么?对此程序片段做何处理?

我相信很多象我一样的新手对此都很迷茫,希望哪位大侠能赐教一下.

搜索更多相关主题的帖子: 参数 编译 
2006-11-23 12:23
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
char *endptr;//声名并定义变量,分配随机内存?//分配一个字的空间
char *string="123.456e-1";//声明并定义初始化变量,并分配内存?//在常量区分配一个空间存储123.456e-1,并用string指它
long double _strtold(const char *string,char **endptr);//声明函数,编译器对它做什么处理?在一张表格中注册?//是的,用来检查类型匹配 ,同时定义一个函数指针
_strtold(string,&endptr);//过程如何?这样吗:函数过程加载到内存(是加载到上条指令的接下来的地址还是别的地址,然后跳转过去?),首先形参初始化,然后处理过程?这里又有个问题,如果形参的第一个参数无const修饰,那么编译器如何区分形参同名的实参呢?难道一个作用域一张什么什么表格?
过程放到代码区,形参初始化,然后处理过程?是的
每个函数之前都有一个前缀,例如,void fn1(int t);void fn2(int t);
这不会发生t的重名,会生成类似这样的前缀 fn1_t fn2_t
这样就不会混了。
回答完毕

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-11-23 13:21
wyj444698561
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-11-23
收藏
得分:0 

2006-11-23 14:24
自由呼吸
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2006-11-11
收藏
得分:0 

真的,太感谢了
下面的问题大家再帮帮忙好吗
"这里又有个问题,如果形参的第一个参数无const修饰,那么编译器如何区分形参同名的实参呢?难道一个作用域一张什么什么表格?"
编译器的大概处理过程怎么样的?以此程序片段,TC 2为例.编译器要巡检几次?每次都做什么?对此程序片段做何处理?

2006-11-23 21:55
linghao
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2006-11-20
收藏
得分:0 
有无CONST 也是重载的
2006-11-24 16:18
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
以下是引用自由呼吸在2006-11-23 21:55:56的发言:

真的,太感谢了
下面的问题大家再帮帮忙好吗
"这里又有个问题,如果形参的第一个参数无const修饰,那么编译器如何区分形参同名的实参呢?难道一个作用域一张什么什么表格?"
编译器的大概处理过程怎么样的?以此程序片段,TC 2为例.编译器要巡检几次?每次都做什么?对此程序片段做何处理?


我已经说过了
在那里加了前缀
例如变成 fn1_string(形参)=string(实参)


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-11-24 18:08
自由呼吸
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2006-11-11
收藏
得分:0 

haha,太笨了

2006-11-24 18:40
快速回复:参数传递问题+编译器大概工作过程
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014544 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved