#include int getopt(int argc, char * const ar**,
const char *optstring);
extern char *optarg;
extern int optind, opterr, optopt;
getopt函式需要傳入對應的argc和ar**參數列,還需要乙個optstring:比如 getopt(argc, ar**, 「ab:c::」);
1. 單個字元表示選項,比如示例中的a選項。可以通過傳入"-a"來觸發選項。
2. 字元後加:表示選項後要加乙個引數,比如示例中的b選項,可以通過"-b ***"來傳入選項。
3. 字元後加::表示選項後可選擇加乙個引數或者不加,比如示例中的c選項,可以通過"-c"或者"-c***"的格式來傳入選項。
除了對應的getopt函式外,標頭檔案中還定義了全域性變數optarg、optind、opterr、optopt:
optind:表示下乙個要被getopt解析的ar**引數index索引號
optarg:如果選項後加引數的話,此變數會存入對應的引數
opterr:當getopt發現乙個無法識別的選項時會列印一條錯誤資訊到stderr,如果呼叫函式設定opterr=0, 此錯誤資訊就不再列印出來。
optopt:當getopt發現乙個無法識別的選項時會把對應的選項賦值給optopt,否則optopt為空,然後返回』?』。
示例:
#include #include #include int
main(int argc, char *ar**)
}printf("f_flag=%d; t_flag=%d; nsecs=%d; optind=%d\n", f_flag, t_flag, nsecs, optind);
if (optind >= argc) else
exit(exit_success);
}
#include int getopt_long(int argc, char * const ar**,
const char *optstring,
const struct option *longopts, int *longindex);
int getopt_long_only(int argc, char * const ar**,
const char *optstring,
const struct option *longopts, int *longindex);
除了上面介紹的getopt選項函式之外,如果我們想要支援"–help"這種型別的長選項,可以使用這個函式,這個函式可以同時定義短選項和長選項,argc和ar**依然是參數列;optstring和上文一致表示的是短選項;longopts表示長選項,傳入的是乙個結構體陣列;longindex表示當前返回的選項對應在陣列中的索引index。
對應的全域性變數optarg、optind依然是可以用的。關於struct option的定義:
struct option ;
如果flag為null,那麼getopt_long匹配到選項後會返回val;否則getopt_long匹配到選項後返回值為0,flag指向的變數會被設定為val的值。
示例:
#include #include #include int
main(int argc, char **ar**)
, ,
};int option_index = 0;
while (1)
}if (optind >= argc) else
exit(exit_success);
}
可變引數解析
提供了以下資料型別和巨集,以便我們編寫長度可變的函式 typedef char va list define intsizeof n sizeof n sizeof int 1 sizeof int 1 define va start ap,v ap va list v intsizeof v de...
csr matrix引數解析
indptr np.array 0,2,3,6 indices np.array 0,2,2,0,1,2 data np.array 1,2,3,4,5,6 csr matrix data,indices,indptr shape 3,3 toarray array 1,0,2 0,0,3 4,5,...
git clone引數解析
git官網 概要git clone template l s no hardlinks q n bare mirror o b u reference dissociate separate git dir depth no single branch no tags rerserse submod...