函数的声明、定义与函数的编译、链接

原创 2016年08月30日 22:11:50

语言可以分为编译型语言和解释型语言,对于编译型语言,一次编译,源程序不改变则无需再进行编译。解释型语言是在运行时解释一条执行一条,如此反复直至完成。

编译型语言编写程序之后需进行几个必不可少的步骤:预处理、编译、链接,三个各有各的作用,有时三个可以放在一起方便编写调试,但有的情况下需要根据其作用发挥其各自的功能。

 

进行函数声明之后,在程序中使用该函数,若未定义,编译该程序,会发现,程序的编译正确通过。但是不能通过链接生成可执行文件 .exe 。由此得出,函数在编译过程中,将一个整体程序以文件为单位分成多部分进行编译,编译中检查其语法是否正确。函数的声明告诉程序,在其子函数中有这么一个函数(函数的返回类型,函数的形参个数及类型),而主函数在使用中知道有一个相同返回类型,相同函数名,相同参数的函数可以用,所以主函数中的编译通过。

 

在函数链接过程中,需要将几个编译的块组装在一起,包括库函数的编译代码及子函数的编译代码,组装在一起才能运行。而这时发现函数中没有对子函数进行定义的编译代码,则发出警告,链接出错。

C++编译与链接(0).h与.cpp的定义与声明

C++中有的东西需要放在可以在.h文件中定义,有的东西则必须放在.cpp文件中定义,有的东西在不同的cpp文件中的名字可以一样,而有的则不能一样   那么究竟哪些东西可在头文件中定义,声明,哪些东...

C++函数声明和定义

  • 2011年07月18日 14:42
  • 49KB
  • 下载

C++ 声明 定义 头文件 编译 链接

声明是告诉编译器一些信息,以协助编译器进行语法分析,避免编译器报错。而定义是告诉编译器生成一些代码,并且这些代码将由连接器使用。即:声明是给编译 器用的,定义是给连接器用的。这个说明显得很模糊,为什么...

c++模板函数声明定义分离编译错误详解

今天看到accelerated c++上有个简单的vector容器的实现Vec,就再vs2008上编译了下:   ///// Vec.h #ifndef GUARD_VEC_H #defi...

一个C语言函数声明和定义的编译问题

最近在看Redis代码,看到SDS字符串时,有个地方很诡异,代码如下: static inline size_t sdslen(const sds s) { struct sdshdr *sh...

ARM GCC 链接错误 引用未定义函数 _read _write _sbrk 解决和重定向

使用 printf ,scanf ,malloc 等函数需要实现`_read'`_lseek'`_isatty'`_fstat'`_write'`_sbrk' 函数。 stm32 使用stdlib ...

C语言中变量和函数的声明与定义

一、变量 在将变量前,先解释一下声明和定义这两个概念。声明一个变量意味着向编译器描述变量的类型,但并不为变量分配存储空间。定义一个变量意味着在声明变量的同时还要为变量分配存储空间。在定义一个变量的同...

关于模板类中友元函数的声明与定义

#include using namespace std; template class Widget { friend void AccessWidget(const Widget& w); ...

模板函数的定义和声明须在同一文件内

按照C++中代码的惯例,类声明在h文件中,类定义在cpp文件中,相应的成员函数声明也在h文件中,定义在cpp文件中。但是如果这样的架构用在模板函数中,在调用模板函数的地方链接器便会报错,error L...
  • realray
  • realray
  • 2011年12月05日 10:36
  • 451

C-015.函数的基本概念、定义、调用、返回值、参数和声明

1.函数的基本概念 函数:完成特定功能代码块 函数作用:管理代码的 函数的优点:提高代码的可读性 提高代码的复用性 提高代码可维护性 函数:函数名不可以重复定义 要给函数起一个有意义的名字 函数特...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:函数的声明、定义与函数的编译、链接
举报原因:
原因补充:

(最多只允许输入30个字)