-
c语言 外部函数
2013-09-20 11:37:51extern int add(int number1,int number2 )//定义外部函数 求和 { return number1+number2; } main.c 文件代码: #include extern int add(int number1, int number2);//声明外部函数 int maextern.c 文件代码
#include <stdio.h> extern int add(int number1,int number2 )//定义外部函数 求和 { return number1+number2; }
main.c 文件代码:#include <stdio.h> extern int add(int number1, int number2);//声明外部函数 int main(int argc, const char * argv[]) { int a=46; int b=37; int result= add(a,b);//调用外部函数 printf("result=%d",result); return 0; }
-
C语言外部函数与内部函数
2017-12-18 17:09:11C语言中,根据函数能否被其他源文件调用,分为内部函数和外部函数 外部函数,可以被其他源文件调用的函数 内部函数,只在定义的文件中有效外部函数开发大型项目,可能包含很多源文件来分别实现,最终,再整合在...函数的调用,一般是对同一个源文件中的其他函数进行调用的,也可以对另外一个源文件中的函数进行调用
C语言中,根据函数能否被其他源文件调用,分为内部函数和外部函数
外部函数,可以被其他源文件调用的函数
内部函数,只在定义的文件中有效外部函数
开发大型项目,可能包含很多源文件来分别实现,最终,再整合在一起,有时,一个源文件中,需要调用其他源文件中的函数
调用外部函数之前,需要在当前源文件中定义外部函数
定义外部函数的方式,在函数的返回值类型前面添加extern关键字
示例代码
extern int add(int x,int y);
编译器,通过extern关键字会知道,add()函数是定义在其他文件中的外部函数
示例代码第一个源文件 int add(int x,int y) { return x+y; } 第二个源文件 #include <stdio.h> extern int add(int x,int y); void main() { printf("sum=%d\n",add(1,2)); }
运行结果
C语言中
定义外部函数时,可以省略关键字extern
修改如下
int add(int x,int y);由函数的返回类型、函数名和参数列表组成,这类格式的代码被称为函数原型
当代码中包含函数原型时,可能有两种情况
1、程序员希望编译器自动从其他文件中,查找该函数的定义
2、程序员先定义未实现的空函数,然后,在其他文件中具体实现注意
声明外部函数时,无论有没有关键字extern,外部函数与原函数定义的返回值类型、函数名称和参数列表必须一致内部函数
外部函数,只要声明一个函数原型,就可以调用其他源文件中的函数,但是,当多人开发时,可能出现函数重名的情况,不同源文件中的同名函数会相互干扰
此时,就需要一些特殊函数,只在定义的文件中有效,这类函数称为内部函数定义内部函数
在定义内部函数时,需要在函数的返回值类型前面添加static关键字,也称静态函数
示例代码第一个文件 #include<stdio.h> void show() { printf("%s \n","first.c"); } 第二个文件 #include<stdio.h> static void show() { printf("%s \n","second.c"); } void main() { show(); }
运行结果
如果,将第二个文件中的static去
运行程序会报错 -
C语言外部函数调用(Ⅲ)动态库和静态库
2020-08-25 10:12:12静态库是在编译时,将库编译成可执行程序,运行时不需要外部函数库。没有依赖性。 动态库是在运行时,将库加载到程序中,运行时需要外部函数库。有依赖性。 Window下的静态库和动态库是.lib和.dll文件 Linux下的静态...静态库是在编译时,将库编译成可执行程序,运行时不需要外部函数库。没有依赖性。
动态库是在运行时,将库加载到程序中,运行时需要外部函数库。有依赖性。Window下的静态库和动态库是.lib和.dll文件
Linux下的静态库和动态库是libxxx.a和libxxx.so文件Window下vs静态库和动态库的配置过程:
当需要使用别人的库时,需添加.h,.lib,.dll文件到工程中。- 建立include文件夹,里面存放.h文件,然后右击工程项目,“属性”->”C/C++”->“常规”->”附加库目录”,然后添加.h的路径,一般是”……/include”。
- 建立lib文件夹,里面存放.lib文件,然后右击工程项目,“属性”->“链接器”->”输入”->”附加依赖项”,添加对应的.lib文件名称,一般是”…./xxx.lib”。
- 建立bin文件夹,里面存放.dll文件,然后右击工程项目,“属性”->“配置属性”->”调试”->”环境”,添加path=“…/bin”
选择生成.lib文件会生成一个.lib文件夹,里边包含.obj,.lib等文件,这样生成的比较多。但是用的时候只给出lib路径就ok了。
选择生成.dll文件会生成一个.lib文件夹,里边包含.obj,.lib,.dll等文件,这样生成的比较少,但是用的时候要给出.dll文件。
常见问题总结:
1.外部函数引用时,编译时报错Cannot open include file: ‘xxx.h’: No such file or directory
程序里引用的#include”XXX.h”是相对路径。要么把这里的路径写完整的路径,要么就在右击properties里的C/C++的general的additional include directories添加上这个.h文件的路径才能在程序里应用相对路径。2.外部函数引用时,编译时报错“4 unresolved externals”,因为运行程序需要的lib文件没有添加,需要在右击properties里的linker的input里additonal dependencies的添加需要的lib文件。这里需要些完整路径。(如果在general里有路径,这里可以填写那个里边的相对路径)
3.编译时报错,提示cannot open file ‘xxx.lib’
因为程序运行时找不到该静态库,要在右击properties里的linker的general里additonal library directories的找到这个lib所在的路径添加上。4.编译成功,运行时报错“由于找不到opencv_world310d.dll,无法继续执行代码。重新安装程序可能会解决此问题”。是因为动态运行时找不到这个dll文件。两种解决方法:找到这个dll文件复制到运行程序的.exe同一路径下的位置。或者在properties里的configuration properties的debugging的environment中添加:
path=E:\dianti\KCM_Demo(2)\OpenCV\opencv-2.4.9\build\x64\vc14\bin5.用openCV\opencv3.1.0\build\x64\vc14\lib\opencv_world310d.lib读取视频之后是空的
if (frame.empty())
break;
改成openCV\opencv-2.4.9\build\x64\vc14\lib读取就没有问题。
换的具体步骤:1.linker中的input改成:E:…\OpenCV\opencv-2.4.9\build\x64\vc14\lib*.lib。2.C/C++中的general的additional include directories中添加E:…\OpenCV\opencv-2.4.9\build\include。3.把configuration properties中debugging中的environment中添加:path=E:…\OpenCV\opencv-2.4.9\build\x64\vc14\bin -
C语言内部函数与外部函数
2017-09-24 10:26:02内部函数与外部函数的区分标准是,该函数能否被其他源文件调用。内部函数与外部函数的区分标准是,该函数能否被其他源文件调用。
- 内部函数
如果一个函数只能被本文件中的其他函数调用,称为内部函数。在定义内部函数的时候,在函数名和函数类型的前面加static,即:
static 类型名 函数名(形参列表)
例如函数的首行:static int function(int a)
表示该函数function是一个内部函数,只能被本文件中的函数调用,而不能被其他文件调用。 - 外部函数
与内部函数相反,外部函数则是可以被其他文件调用的函数。在函数声明时,加上extern关键字,则声明为外部函数,可供其他文件调用。
如:函数首部可以是:extern int fun (int a,int b)
C语言规定如果在定义函数时省略extern,则默认为外部函数。所以除非声明为static,我们常写的都是外部函数。
- 内部函数
-
C语言 内部函数和外部函数问题
2010-04-09 16:54:00内部函数和外部函数内部函数: 需加static声明,又称静态函数,只能在该文件中调用,在其他文件中不能被调用外部函数:1. 在定义函数时,若在函数首部的...C语言规定,定义函数时省略了extern 则隐含为外部函数,可被 -
程序员之路:C语言内部函数与外部函数
2017-08-29 15:41:07内部函数:不能被其他源文件调用的函数 static [数据类型] 函数名([参数]) ...外部函数:能被其他源文件调用的函数(系统默认)extern也可以省略 extern [数据类型] 函数名([参数]) ... -
c语言中的extern_7.6 C语言内部函数和外部函数
2021-01-19 04:54:4801关于变量的声明和定义1、一个函数一般由两部分组成:声明部分和执行语句。2、对变量而言,声明与定义的关系稍微复杂一些。在声明部分出现的变量有两种情况:一种是需要建立存储空间的,另一种是不需要建立存储空间... -
C语言——函数定义及用法【内部函数&外部函数&内联函数】
2020-02-05 11:41:09目录: 一:定义 二:函数的一般形式 组成部分 1.返回类型 ...外部函数&内联函数 1.内部函数 定义: 2.外部函数 定义: 3.内联函数 定义: 注意: 七:main 函数的参数 1. main 函数带参... -
C语言之外部函数
2019-07-24 18:23:30在需要调用此函数的文件中,用extern对函数声明,表示该函数是在其他文件中定义的外部函数 实战演练:有一个字符串,内有若干个字符串,要求输入一个字符串,程序便将字符串该字符删去。要求用外部函数实现! #... -
C语言是外部函数与内部函数
2019-07-19 09:55:50人本身是有自己的特定方法的,比如当你说话的时候,不希望是别人让你怎么说你就怎么说吧,...在C语言中不能被其他源文件调用的函数称谓内部函数,内部函数由static关键字来定义,因此又被称谓静态函数,形式为: s... -
程序员之路:C语言内部函数与外部函数_彭世瑜_新浪博客
2017-08-29 15:41:07内部函数:不能被其他源文件调用的函数 static [数据类型] 函数名([参数]) ...外部函数:能被其他源文件调用的函数(系统默认)extern也可以省略 extern [数据类型] 函数名([参数]) ... -
【C语言】外部函数和内部函数
2016-02-12 08:54:23【外部函数】 【内部函数】 1.外部函数 定义的函数能被本文件和其它文件访问(默认)。 注:不允许有同名的外部函数。 2.内部函数 定义的函数只能被本文件访问,其它文件不能访问。 注:允许... -
c语言-函数
2020-07-31 16:32:231、内部函数 如果一个函数只能在本文件使用,它称为内部函数。...c语言规定,如果在定义函数时省略extern,则隐含为外部函数。 在需要调用外部函数的文件中,用extern声明所用的函数为外部函数。 ... -
一起学习C语言:函数(二)
2020-08-01 21:51:07本章节,我们分析内部函数和外部函数,以及变量的生命周期。 章节预览: 4. 外部函数与内部函数 4.1 外部函数 4.2 内部函数 5. 变量的生命周期与作用域 目录预览 章节内容: 4. 外部函数与内部函数 ... -
C语言的内部函数和外部函数用法
2010-04-09 16:53:00内部函数和外部函数内部函数: 需加static声明,又称静态函数,只能在该文件中调用,在其他文件中不能被调用外部函数:1. 在定义函数时,若在函数首部的...C语言规定,定义函数时省略了extern 则隐含为外部函数,可被 -
C语言 *函数
2017-11-20 13:37:10所有的C程序必须定义一个称之为main的外部函数,main函数是程序的入口,也就是当程序启动时所执行的第一个函数,当这个函数返回时,程序也将终止,并且这个函数的返回值被看成是程序成功或失败的标志,如果在到达... -
C语言的函数与指针
2020-07-05 16:25:28同C语言的变量类型一样,函数也有内部函数和外部函数之分。可以被其他文件调用的为外部函数;不能被其他文件调用的为内部函数。相应的,内部函数使用关键字static进行修饰,外部函数使用extern关键字进行修饰。 类型... -
C语言静态函数
2019-10-08 17:57:39当一个源程序由多个源文件组成时,根据函数能否被其它源文件中的函数调用,将函数分为内部函数和外部函数。 1内部函数(又称静态函数) 如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一... -
C语言-函数
2020-07-17 10:50:10函数设计应该追求高内聚低耦合,即函数体内部实现修改了,尽量不要对外部产生影响。 函数尽可能少的使用全局变量,且函数参数不宜设置过多,并且尽量做到资源谁申请谁释放。 函数递归 递归的两个条件: 将问题... -
C语言-内部函数与外部函数+调用实例
2015-08-05 09:59:18外部函数由extern定义,可以被其他源文件的函数调用。extern可以省略。 这样的分类可以让我们的代码更有可读性和模块化。 file1.c #include int main() { extern double cost(double dis, double time);//... -
C语言中有关外部函数调用的问题
2016-06-16 21:44:57首先指出一点,我们通常所说的编译器并非仅指编译器,确切来说是编译工具链,里面...而外部函数的声明(一般声明在头文件中)只是令程序顺利通过编译而已,此时并不需要搜索到外部函数的实体。 当然,外部函数实体... -
C语言extern调用外部函数
2016-12-22 21:26:16> lsxuanzeSort.c common.c> cat common.c#include //公共函数文件//打印long型数组的内容 void print_array_long(long arr[],long length) { long i; for(i = 0;i;i++){ printf("%ld ",arr[i]); -
一起学习C语言:函数(三)
2020-09-06 22:28:01中,我们了解了内部函数和外部函数,以及变量的声明周期与作用域。本章节,我们分析函数的存储类别与声明方式,以及函数的递归调用原理。 章节预览: 6. 变量的存储类别与声明方式 7. 函数的递归调用 目录预览 ...