利用getopt long 為程式傳入引數

2021-06-19 00:20:52 字數 1139 閱讀 9606

man getopt_long,得到其宣告如下:

int getopt_long(int argc, char * const argv,const char *optstring, const struct option *longopts,int *longindex);
函式中的argc和argv通常直接從main()的兩個引數傳遞而來。optsting是選項引數組成的字串:

字串optstring可以下列元素:

1.單個字元,表示選項,

2.單個字元後接乙個冒號:表示該選項後必須跟乙個引數。引數緊跟在選項後或者以空格隔開。該引數的指標賦給optarg。

3 單個字元後跟兩個冒號,表示該選項後可以有引數也可以沒有引數。如果有引數,引數必須緊跟在選項後不能以空格隔開。該引數的指標賦給optarg。(這個特性是gnu的擴張)。

引數longopts,其實是乙個結構的例項:

struct option
小例子:

#include #include #include /*單個字元,表示選項,單個字元後接乙個冒號:表示該選項後必須跟乙個引數。 

引數緊跟在選項後或者以空格隔開。該引數的指標賦給optarg。

optarg不需要定義,在getopt.h中已經有定義)*/

為 Linux 程式打包

2012 09 14 最近有個專案需要把編譯好的 linux 程式打包後安裝到多種 linux 發行版上執行。由於是不同的發行版,所以不適合使用各個發行版自己的軟體包格式。即使針對特定發行版,還是會因為不同版本的系統庫版本不同而無法建立通用的軟體包。程式既需要安裝到 fedora 6 這樣 古老 的...

利用多型重構為帶參方法

重構之美 之二 public class worksheet public void fillbody 方法fillheader 和fillbody 的目的都是從物件中獲得字串陣列,然後將其填充到單元格中。區別在於,獲得字串陣列的物件並不相同。前者為header物件,後者為cellgroup物件。我...

利用多型重構為帶參方法

重構之美 之二 public class worksheet public void fillbody 方法fillheader 和fillbody 的目的都是從物件中獲得字串陣列,然後將其填充到單元格中。區別在於,獲得字串陣列的物件並不相同。前者為header物件,後者為cellgroup物件。我...