在GNU的
getopt_long
示例中,一个在文件作用域中定义的标志使用了static
。/* Flag set by ‘--verbose’. */
static int verbose_flag;
在一个while
循环块作用域中定义的long_options
结构体中:
static struct option long_options[]
这里使用static
是为了防止其他文件访问变量。在这两种情况下,static
的使用方式相同,在结构体中更有效率,因为它保存在内存的同一位置并且不会重新初始化。
verbose_flag
在文件作用域中,即使没有static
也不会在迭代之间失去其值。它被设置为static
是出于不同的原因... - hyde