【发布时间】:2009-12-08 04:35:09
【问题描述】:
有时我们需要预先声明一个静态变量然后使用它。 但是这个声明的变量名可能是错误的,编译器检测不到,哎呀!
例子:
/* lots of codes */
static some_type some_name; /* pre-declaration */
/* but it may define "some_name" */
/* use some_name */
/* lots of codes */
static some_type someName = initialization; /* definition */
/* use someName */
/* lots of codes */
"some_name" 和 "someName" 不同,我们在开头使用了错误的变量。 如果预声明语句没有定义任何东西,编译器会检测到错误。
那么,如何声明一个静态变量而不定义它呢?如何将预声明更改为使编译器可以检测到错误名称的新声明?
【问题讨论】:
-
static 表示它在编译时加载。为什么你不想初始化它?
-
Woot4Moo:在 C 中将全局变量设为“静态”意味着它在当前“编译单元”(通常是 .c 文件及其所有头文件)之外不可见。所有不是“extern”的全局变量都在编译时分配空间。
标签: c++ c static definition