声明和定义,Declare 和 Define。
很多编写脚本语言的程序员刚接触的时候会比较晕,不知道为什么会有声明的存在。
最近了解了一些编译器的东西,才领悟到,声明主要是让编译器将所声明的变量、函数等添加到符号表中,而这些符号实际的地址就交给链接器取完成。
所以,在很多个源文件的时候,将函数的声明放在一个头文件中。用到这个函数的时候,只要包含这个头文件,编译器就会认为这个外部变量或者函数存在,并将其加入到符号表中。链接器随后去找这个符号的定义,如果找到就把地址“填”到可执行文件中,如果没找到,就会报错。