#ifndef

来源:互联网 发布:民治编程语言培训 编辑:程序博客网 时间:2024/05/16 08:25

在c语言中,对同一个变量或者函数进行多次声明是不会报错的。所以如果h文件里只是进行了声明工作,即使不使用# ifndef宏定义,一个c文件多次包含同一个h文件也不会报错。 使用#ifndef可以避免下面这种错误:如果在h文件中定义了全局变量,一个c文件包含同一个h文件多次,如果不加#ifndef宏定义,会出现变量重复定义的错误;如果加了#ifndef,则不会出现这种错误。

但是在c++语言中,#ifndef的作用域只是在单个文件中。所以如果h文件里定义了全局变量,即使采用#ifndef宏定义,一个c++文件包含同一个h文件多次还是会出现全局变量重定义的错误。

嵌套的作用域:

作用域可以彼此包含,被包含的为内层作用域(inner scope),包含其他作用域的为外层作用域。允许在内层作用域中重新定义外层作用域已有的名字。定义了之后,要访问内层的可以直接访问,要访问外层的要加双引号    “::”.