2011-03-03 59 views
3

是否可以關閉getopt_long()中的縮寫?從手冊頁:關閉getopt_long(optarg.h)中的縮寫?

如果縮寫是唯一的或者與某些定義的選項完全匹配,則可以縮寫長選項名稱。

我想這樣做,因爲我收到的一段代碼的規範需要標誌的完全匹配,並且有很多標誌。

回答

4

Codeape,

看來沒有辦法禁用縮寫功能。您並不是唯一希望獲得此功能的人。請參閱:http://sourceware.org/bugzilla/show_bug.cgi?id=6863

不幸的是,這似乎glibc的開發者不希望的選擇,因爲上面「WONTFIX」就解決了鏈接的錯誤報告。你可能是出於運氣這裏: - \

+1

謝謝你的信息。 – Codeape 2011-03-04 06:39:29

2

如果使用argp_parse(),而不是getopt的()(高reccommended,BTW),您可以通過訪問由用戶輸入的確切標誌

 
state->argv[ state->next - 2 ] 

這有點黑客,但應該工作。

0

這不是完美的解決方案,但你可以調用getopt_long(後檢查用戶給出確切ARG)(一般不超過開關)象下面這樣:

if (strcmp(argv[optind-1], "--longoption") == 0) 

OPTIND點下一個,你需要處理的說法。因此,您可以使用optind-1訪問原始參數。