如fun();
然后在另一个.c文件的main()函数中调用fun();
只要保证一个C工程只有一个main()做入口点就行了,至于保留哪个main函数,那就要看你程序的逻辑了,注意main函数是入口点的概念
我想C语言中调用函数分以下内几部:\x0d\x0a1)根据调用的函数名找到函数入口;\x0d\x0a2)在栈中审请调用函数中的参数及函数体内定义的变量的内存空间\x0d\x0a3)函数执行完后,释放函数在栈中的审请的参数和变量的空间,最后返回值(如果有的话)例子代码如下所示:
int Add(int x, int y) { int sum
sum = x + y return sum
}void main() { int z
z = Add(1, 2) printf("z=%d\n", z)
}
下面分析一下 Add函数的调用过程。
首先断点在z = Add(1, 2)处, 反汇编如下所示:
int z
z = Add(1, 2)002C141E 6A 02 push 2 002C1420 6A 01 push 1 002C1422 E8 60 FC FF FF call 002C1087
002C1427 83 C4 08 add esp,8 002C142A 89 45 F8 mov dword ptr [ebp-8],eax
首先压入参数1和2:
002C141E 6A 02 push 2 002C1420 6A 01 push 1
通过观察ESP可以看到参数从右到左依次入栈,ESP往低内存方向移动8字节:
ESP=0025FCCC
...0x0025FCAA 00 00 78 4c 33 00 bc fc 25 00 a9 fe aa 0f 78 4c 33 00 c8 fc 25 00 3d 5a b2 0f *** 01 00 00 00 02 00 00 00 ***0x0025FCCC 00 00 00 00