2010-12-16 4 views
4

を使用するときに、なぜ構造体オプションの配列は、addtionalのダミーエントリーを必要とする例えばオプションの配列です:それはパディングにはのgetopt_long

static struct option const long_options[] = 
{ 
    {"help", no_argument, 0, 'h'}, 
    {"version", no_argument, 0, 'v'}, 
    {0, 0, 0, 0} 
}; 

ですか?

答えて

2

ルック:

int 
getopt_long(int argc, char * const *argv, const char *optstring, 
    const struct option *longopts, int *longindex); 

argcargvペアは、argv[argc] == 0以来かかわらず、明示的な数で(配列であるどのように多くのエントリが言うする1つの方法を示し、そこにはセンチネルもある)。 optstringは短い引数を示します。 longindexは出力パラメータです。これは、ポインタがlongoptsのままであることを意味します。つまり、サポートカウントなしで配列内のエントリ数を知ることができなければなりません(longoptcount引数はありません)。そのため、配列の終わりは0値。

3

「センチネル」なので、配列を処理しているコードは、いつ終了するのかを知っています。 getopt_long()のmanページで

関連する問題