Skip to Content
C++程序设计:原理与实践(基础篇)(原书第2版)
book

C++程序设计:原理与实践(基础篇)(原书第2版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
Pearson
Content preview from C++程序设计:原理与实践(基础篇)(原书第2版)

5.4 链接时错误

一个程序一般包括几个独立的编译部分,称为编译单元。程序中每一个函数在所有编译单元中的声明类型必须严格一致。我们使用头文件来保证这一点,详见8.3节。并且,程序中的每个函数只能定义一次。如果上述两条规则的任意一条被违反的话,链接器将报错。如何避免链接错误将在8.3节中讨论。下面是一个典型的程序链接错误示例:

除非我们在另一个源文件中定义了area(),并且将这一源文件的编译单元与当前文件链接,否则的话,链接器将报告没有发现area()的定义。

同时,area()的定义必须与我们的调用具有严格相同的类型(包括返回值类型和参数类型)即:

具有相同名称但是类型不同的函数将不会被匹配上,并被忽略:

需要注意的是,函数名的拼写错误并不总会导致链接错误。实际上,当遇到一个未声明函数被调用时,编译器将立刻报告错误信息。这一点很好:编译错误早于链接时错误被发现有助于错误的及早排除。

正如上文所述,函数的链接规则同样适用于程序的其他实体,例如变量和类型:具有同一名字的实体只能有一个定义,但是可以有多个声明,所有声明必须具有相同的类型。详见8.2~8.3节。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普
管理Kubernetes

管理Kubernetes

Brendan Burns, Craig Tracey
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉

Publisher Resources

ISBN: 9787111562252