编程论坛's Archiver

vfdff 发表于 2008-5-9 00:37

函数声明的理解

函数声明在使用某个函数的时候,指示当前代码中存在上述的标号(函数名)定义
但是函数声明却并不能知道函数的功能
这个就是说函数只是声明,通知别人已经定义而已吗?
因为我创建了一个静态库,发现对于其对应的函数头文件.h中,我没有把lib中的定义的函数进行声明,却发现当我重新定义一个和这个lib中同名函数的时候,仍旧会发生冲突!而不管这个函数是否在.h中声明过没有.
另外,发现.h中的文件声明 没有使用extern 和有extern ,声明的效果是一样的,好奇怪。

StarWing83 发表于 2008-5-9 03:08

http://yzfy.org/bbs/viewthread.php?tid=688&extra=page%3D1

看我以前写的一篇文章。

vfdff 发表于 2008-5-12 23:32

回复 2# 的帖子

为什么 我发现对于 C代码得到的汇编程序,开头是???
然后只是中间一段位置才插入一些如下的汇编代码
00401129   add         esp,0Ch
0040112C   mov         dword ptr [mainret],eax
0040112F   mov         edx,dword ptr [mainret]
00401132   push        edx
00401133   call        exit (00401210)
$L17805:
00401138   mov         eax,dword ptr [ebp-14h]
0040113B   mov         ecx,dword ptr [eax]
0040113D   mov         edx,dword ptr [ecx]
0040113F   mov         dword ptr [ebp-20h],edx
00401142   mov         eax,dword ptr [ebp-14h]
00401145   push        eax
00401146   mov         ecx,dword ptr [ebp-20h]
00401149   push        ecx
0040114A   call        _XcptFilter (004013a0)
0040114F   add         esp,8
$L17807:
00401152   ret
$L17806:
00401153   mov         esp,dword ptr [ebp-18h]
00401156   mov         edx,dword ptr [ebp-20h]
00401159   push        edx
……
是不是这个汇编代码的执行,是从什么固定位置开始的 ?、

StarWing83 发表于 2008-5-13 06:07

C/C++的程序,都是从一段特定的汇编代码Startup Code 执行的。由Startup Code调用main函数,这就是main函数参数可以不一样的原因。

mqh21364 发表于 2008-5-13 10:26

我的汇编代码怎么是AT&T格式的阿????
我用gcc

aaaaaa 发表于 2008-5-27 14:59

[quote][bo][un]vfdff[/un] 在 2008-5-12 23:32 的发言:[/bo]

为什么 我发现对于 C代码得到的汇编程序,开头是???
然后只是中间一段位置才插入一些如下的汇编代码
00401129   add         esp,0Ch
0040112C   mov         dword ptr [mainret],eax
0040112F   mov        ... [/quote]


大哥,这段汇编代码对应的C语言源程序可以发出来吗》

StarWing83 发表于 2008-5-27 19:21

上面那段汇编,第一段是exit(mainret);也就是说使用main的返回值调用exit函数,这段代码是Startup Code里面的。
第二段应该是某个函数的内容,具体操作是调用了某个需要两个参数的函数XcptFilter。
第三段不完全,就不说了。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.