当前位置: 代码迷 >> C语言 >> 函数声明的理解
  详细解决方案

函数声明的理解

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

----------------解决方案--------------------------------------------------------
http://yzfy.org/bbs/viewthread.php?tid=688&extra=page%3D1

看我以前写的一篇文章。
----------------解决方案--------------------------------------------------------
回复 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
……
是不是这个汇编代码的执行,是从什么固定位置开始的 ?、
----------------解决方案--------------------------------------------------------
C/C++的程序,都是从一段特定的汇编代码Startup Code 执行的。由Startup Code调用main函数,这就是main函数参数可以不一样的原因。
----------------解决方案--------------------------------------------------------
我的汇编代码怎么是AT&T格式的阿????
我用gcc
----------------解决方案--------------------------------------------------------
上面那段汇编,第一段是exit(mainret);也就是说使用main的返回值调用exit函数,这段代码是Startup Code里面的。
第二段应该是某个函数的内容,具体操作是调用了某个需要两个参数的函数XcptFilter。
第三段不完全,就不说了。
----------------解决方案--------------------------------------------------------
  相关解决方案