C&C++ 声明 定义 作用域 链接

(C/C++基础)

声明 与 定义

  • 声明的意义是让编译器知道其存在,重复的声明是可以的

  • 定义的意义是让编译器为其分配空间,或说创建对象,重复的定义是禁止的

    • 特殊情况,变量的嵌套作用域可以小作用域覆盖大作用域。`

编译器的编译单元是各个c/cpp源文件,而在每个编译单元中所使用到的变量和函数,编译器必须要知道其存在及其存在的形式

所以说所有涉及到的对象必须有声明存在于每个源文件中

但是定义可以放在其他源文件中,编译器会自动在最后链接

作用域 与 链接

  • 作用域概念比较简单

  • 链接分为外链与内链,修饰符是externstatic,外链使文件作用域变为全局作用域

    • 对于函数与变量而言,默认具有外链属性,即void func();等效于extern void func();

    • 问题是对变量而言,纯净的声明并不自然存在int i实际上已经创建了对象,声明即定义

    • 要纯净声明变量,只能使用extern int i,同时也表明i具有全局作用域,其定义可能在其他文件。

存储期 与 static的另一个作用

  • static的另一个作用是在块作用域中,将变量声明为静态存储。

2019-07-09

你可能感兴趣的:(C&C++ 声明 定义 作用域 链接)