"用extern声明外部变量-ppt C程序设计。谭浩强"
在C语言中,`extern`关键字是用来声明一个已经在其他源文件中定义的全局变量或函数。这使得变量或函数可以在当前源文件中被访问,即使它们不是在这个文件中定义的。全局变量在函数外部定义,其作用域从定义位置开始,直到源文件结束,可以被文件中的所有函数使用。然而,当有多个源文件需要共享同一个全局变量或函数时,就需要`extern`声明来指示编译器这些实体已经在其他地方定义过了。
`extern`声明通常出现在以下情况:
1. **跨文件共享变量**:当你在一个源文件中定义了一个全局变量,而在另一个源文件中想要使用它,你需要在那个文件中使用`extern`声明该变量,这样编译器才知道该变量的存在。
2. **头文件中的声明**:在头文件中,通常会使用`extern`声明全局变量或函数,以供包含此头文件的其他源文件使用。这样做可以避免在每个源文件中都复制全局变量的定义,从而减少内存占用和避免可能出现的链接错误。
3. **防止重复定义**:如果一个变量在两个源文件中都被定义,而没有使用`extern`声明,编译器会认为这是两个不同的变量,导致链接错误。使用`extern`可以避免这种问题,确保变量在整个程序中只被定义一次。
C语言的特点包括简洁性、高效性和灵活性,它允许程序员直接操作硬件,提供了丰富的控制结构和数据类型。C语言的程序结构通常包括预处理指令、函数定义、变量声明等部分。程序的执行通常分为编译、链接和运行三个阶段。在计算机上运行C程序,首先需要通过编译器将源代码转换为机器语言的目标文件,然后通过链接器将多个目标文件合并,解决外部引用,生成可执行文件。最后,操作系统加载这个可执行文件并执行。
C语言的发展历程中,经历了从B语言到C语言的演变,C语言因其强大的功能和良好的可移植性,逐渐成为广泛使用的编程语言。1978年的《The C Programming Language》(K&R)一书成为了C语言的标准参考,随后ANSI和ISO分别制定了更严谨的标准,如87ANSI C和ISO C90,不断推动C语言的规范化和标准化。至今,C语言仍然是计算机科学和工程领域的重要工具,特别是在操作系统、嵌入式系统以及系统级编程中。不同编译器可能对C语言的支持有所不同,因此了解所使用的编译器特性是必要的。