c语言外部函数调用方法

c语言函数调用的三种方式

1.

c语言调用函数,c语言外部函数调用方法

函数立即调用执行模式。

2.

通过构造函数创建对象,然后调用自己的方法。

3.

通过构造器调用函数。

定义一个外部函数,然后输入#’name看结果,#<FOREIGN-FUNCTION "C_FUN_NAME" #x10001030>,不同于FUNCTION和COMPILED-FUNCTION。

函数SYSTEM::%PUTD,输入一个名称和一个函数对象,相当于定义一个函数。例如(system::%putd 'foo #'(lambda (x y) (+ x y))),相当于(defun foo (x y) (+ x y))。宏ffi::def-call-out就用它生成函数,不过输入的函数对象不是lambda,而是FOREIGN-FUNCTION对象,该外部函数对象由函数ffi::find-foreign-function返回。

       函数ffi::find-foreign-function从DLL中找出指定名称的函数。输入6个参数,C函数名(字符串),函数类型(PARSE-C-FUNCTION返回的数组),properites(布尔),DLL文件名(字符串),版本号,未知参数(填NIL),返回外部函数对象。

C语言外部函数调用方法主要有两种:一种是在函数声明处使用extern关键字,另一种是使用#include语句。使用extern关键字时,只需要在函数声明处用extern关键字来声明该函数的原型,然后在调用处直接使用该函数就可以了。

而使用#include语句时,需要在头文件中定义要使用的函数,然后在需要使用的函数处使用#include来引入头文件,最后再在调用处使用该函数就可以了。

1.在定义函数时,若在函数首部的最左端加关键字extern,则表示此函数是外部调用,可被其他文件调用,函数首部可以为Extern int fun(int a,int b);C语言规定,定义函数时省略了extern则隐含为外部函数,可被其他文件调用

2、在需要调用函数的文件中,用extern对函数声明,表示该函数是在其他文件中定义的外部函数

c语言调用函数原则

_stdcall是Pascal程序的缺省调用方式,通常用于Win32 Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上"@"和参数的字节数。_cdecl 按从右至左的顺序压参数入栈,由调用者把参数弹出栈。对于传送参数的内存栈是由调用者来维护的(正因为如此,实现可变参数的函数只能使用该调用约定)是C和C++程序的默认调用约定。__cdecl调用约定仅在输出函数名前加上一个下划线前缀,格式为_functionname。_fastcall方式的函数采用寄存器传递参数,VC将函数编译后会在函数名前面加上"@"前缀...