extern,static,头文件

2016-12-13  本文已影响0人  Wangcy

basic.cpp

basic.cpp

main.cpp

main.cpp

1.extern

extern关键字表示这个标识符具有External Linkage。具有External Linkage指的是:如果把main.cpp和basic.cpp链接在一起,如果add在main.cpp和basic.cpp中都有声明(在basic.cpp中的声明同时也是定义),那么这些声明指的是同一个函数,链接之后是同一个GLOBAL符号,代表同一个地址。函数声明中的extern也可以省略不写,不写extern的函数声明也表示这个函数具有External Linkage。

2.static

mul函数只具有Internal Linkage,只有在basic.cpp中多次声明才表示同一个函数,而在main.c中声明就不表示它了。如果把basic.cpp编译成目标文件,函数名mul在其中是一个LOCAL的符号,不参与链接过程,所以在链接时,main.cpp中用到一个External Linkage的mul函数,链接器却找不到它的定义在哪儿,无法确定它的地址,也就无法做符号解析,只好报错。

凡是被多次声明的变量或函数,必须有且只有一个是定义,如果有多个定义,或者一个定义都没有,链接器就无法完成链接,可以有多次声明。

3.include 头文件

如果在其他模块也需要使用add这个函数,都要写函数声明也是很麻烦的。可以自己写一个头文件basic.h,然后在需要add这个函数的模块里加入#include “basic.h”,就无需再写函数声明。

basic.h
上一篇下一篇

猜你喜欢

热点阅读