不同的标识符有着不同的作用域。按作用域的大小可分为如下5种,从大到小依次为:
·程序级
·文件级
·类级
·函数级
·程序块级
程序级的作用域最大,包括组成该程序的若干个文件。属于程序级作用域的有外部变量或对象和外部函数,在定义它的整个程序中都是可见的。
文件级作用域有内部函数和外部静态变量或对象。这种作用域的范围是在定义它的文件内,并且是从定义时开始到该文件结束。另外,宏名的作用范围也是文件级,它从定义时起,一直到文件结束,除非文件中出现了undef取消定义。
类级作用域是指在其类体内,类中的私有成员的作用范围仅在其类体内,而公有成员在类体外有时可见。而类的对象的作用域要看其定义范围。关于类的作用域在后面章节中再讨论。
函数级作用域是在该函数的函数体内,包括函数的形参、函数体内定义的某些自动类变量或对象、内部静态变量或对象以及语句标号等。但是,需要指出的是不包含在函数体内的分程序中、或if语句中、switch语句中以及循环体内所定义的变量或对象。
程序块级作用域包含那些定义在分程序中、if语句和switch语句以及循环语句中的自动类和内部静态类的变量或对象。它们的作用范围仅在定义它的相应范围内,从定义时起是可见的。