10.1.3 其他存储类型说明符
我们会看到static和extern用得很普遍。另外还有用得较少的两个存储类型说明符。一个是auto,人们几乎不用它,因为它告诉编译器这是一个局部变量。auto是“automatic”的缩写,它指明编译器自动为该变量分配存储空间的方法。实际上编译器总是可以从变量定义时的上下文中判断出这是一个局部变量,所以auto是多余的。
还有一个是register,它说明的也是局部(auto)变量,但它告诉编译器这个特殊的变量要经常用到,所以编译器应该尽可能地让它保存在寄存器中。它用于优化代码。但各种编译器对这种类型的变量处理方式也不尽相同,它们有时会忽略这种存储类型的指定。一般,如果要用到这个变量的地址,register指定符通常都会被忽略。应该避免用register类型,因为编译器在优化代码方面通常比我们做得更好。