设置命令行flag
一般使用flag的原因是为了能在命令行指定一个非默认值。以 foo.cc 为例,可能的用法是:
app_containing_foo --nobig_menu -languages="chinese,japanese,korean" ...
执行 ParseCommandLineFlags 会设置 FLAGS_big_menu = false , FLAGS_languages = "chinese,japanese,korean" 。
注意这种在名字前面加“no”的设置布尔flag为false的语法。
设置“languages”flag的方法有:
app_containing_foo --languages="chinese,japanese,korean" app_containing_foo -languages="chinese,japanese,korean" app_containing_foo --languages "chinese,japanese,korean" app_containing_foo -languages "chinese,japanese,korean"
布尔flag稍有不同:
app_containing_foo --big_menu app_containing_foo --nobig_menu app_containing_foo --big_menu=true app_containing_foo --big_menu=false 还包括以上这些的单短线的变种
建议只使用一种形式:非布尔flag, --variable=value ;布尔flag, --variable/--novariable 。保持一致性有一定的好处。
在命令行使用未定义的flag会在执行时失败。如果需要允许未定义的flag,可以使用 --undefok 来去掉报错。
和 getopt() 一样, -- 可以用于结束flag。
重复指定flag使用最后的一个。
不支持单字母的形式的flag,也不支持单短线后的flag合并,像 ls -la 那样。