看你的执行顺序应该是分别执行两个 c 文件。就是两个独立的进程。每个进程有相互独立的虚拟地址空间。你所得到的40059c是另一个进程的函数地址。 在exploit中的40059这个地址是非法使用的。要想在一个进程中使用另一个进程的函数,就必须要用进程间通信。如共享内存,注册函数,共用此函数。
看你的意图是想要在一个文件中利用函数指针调用别的文件中的函数。如果说你只是想要熟悉一下函数指针,那么这种方法是不可取的。因为函数在定义是并不分配存储空间,在调用的时候在栈中分配存储空间,返回时释放。
要想用数值强转成函数地址。这个函数的地址就必须不能改变。那么就需要将函数声明为静态函数。这样麻烦又来了,静态函数是文件内部使用,外部不能引用。所以,你这种做法是不可取的。
这个是可以的,比如有函数
fun1()
{}
fun2()
{
fun1();
}
fun3()
{
fun1();
fun2();
}
main()
{
fun3();
}
这样是完全可以的。
1、首先建头文件是为了声明c文件中的函数,以及包括宏定义。建立头文件要有对应的c文件。
2、要写头文件首先要建一个h文件。
3、打开h文件,进行编辑。建立头文件是有一定步骤的。要用到#ifndef。。。#define。。。。#endif。这是为了避免重复定义。
4、#ifndef后面要写的是头文件名称的大写。例如:testh要写成__TEST_H__。前面与后面是两个下划线。字母用大写。
5、然后在define与endif中间声明函数名,记得写冒号。
6、然后在main文件中写上include这个头文件,就可以调用了。
7、最后编译,运行,就完成了。
#include "文件" 将文件包含进来.要包含多条文件要使用多次.
比如:#include "stdioh"
调用自己的程序模块要给出目录路径名,即指明盘驱动器名和一系列的子目录名.比如:#include "d:\User\test\menuh"
以上就是关于如何用c语言在自己程序中执行另一个程序中(假如不是自己的)的函数全部的内容,包括:如何用c语言在自己程序中执行另一个程序中(假如不是自己的)的函数、在c语言中·子程序可以调用其他子程序么、c语言在头文件中如何引用另一个头文件中的函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)