gflags使用指南

2021-09-26 05:07:59 字數 1699 閱讀 4691

本文**:

最近看到的乙個示例**中有使用gflags,就去簡單查了一下資料學習一下。

github

官方使用文件

gflags簡明教程

gflags使用文件

gflags是google開源的一套命令列引數處理的開源庫,包括c++的版本和python 版本。

和 getopt() 之類的庫不同,flag的定義可以散布在各個原始碼中,而不用放在一起。乙個原始碼檔案可以定義一些它自己的flag,鏈結了該檔案的應用都能使用這些flag。這樣就能非常方便地復用**。如果不同的檔案定義了相同的flag,鏈結時會報錯。

定義乙個flag是簡單的:只需要使用你想用的型別的相應的巨集就可以。

example:

// foo.cc

#include define_bool(big_menu, true, "include 'advanced' options in the menu listing");

define_string(languages, "english,french,german",

"comma-separated list of languages to offer in the 'lang' menu");

支援的型別:

定義的flag可以像正常的變數一樣使用,只需在前面加上flags_字首。如前面例子中的定義了flags_big_menuflags_languages兩個變數。可以像一般變數一樣讀寫:

if (flags_consider_made_up_languages)

flags_languages += ",klingon"; // implied by --consider_made_up_languages

if (flags_languages.find("finnish") != string::npos)

handlefinnish();

定義好引數後,最後要告訴執行程式去處理命令列傳入的引數,使得定義的flag引數得到正確賦值。

通常是在main()函式中呼叫

google::parsecommandlineflags(&argc, &ar**, true);
argcar**就是main的入口引數,因為這個函式會改變他們的值,所以都是以指標傳入。

第三個引數被稱為remove_flags。如果它是true,parsecommandlineflags會從ar**中移除標識和它們的引數,相應減少argc的值。然後ar**只保留命令列引數。

相反,remove_flags是false,parsecommandlineflags會保留argc不變,但將會重新調整它們的順序,使得標識再前面。

note:./foo --big_menu=false arg1中再big_menu是標識,false是它的引數,arg1是命令列引數。

gFlags 使用指南

最近看到的乙個示例 中有使用gflags,就去簡單查了一下資料學習一下。github 官方使用文件 gflags簡明教程 gflags使用文件 gflags是google開源的一套命令列引數處理的開源庫,包括c 的版本和python 版本。和 getopt 之類的庫不同,flag的定義可以散布在各個...

Ubuntu apt 使用指南

起初gnu linux系統中只有.tar.gz。使用者必須自己編譯他們想使用的每乙個程式。在debian出現之後,人們認為有必要在系統中新增 一種機制用來管理安裝在計算機上的軟體包。人們將這套系統稱為dpkg。至此著名的 package 首次在gnu linux上出現。不久之後紅帽子也 開始著手建立...

CImageList使用指南

1.綜述 在mfc 中cimagelist 類封裝了 影象列表控制項的功能,影象列表是乙個具有相同大小的 影象 可以是不同 型別 的集合,其主要用於 應用程式中大規模 圖示的儲存。該控制項是不可 見的,通常與其它如 clistbox ccombobox ccomboboxex ctabctrl 以及...