是否可以關閉getopt_long()
中的縮寫?從手冊頁:關閉getopt_long(optarg.h)中的縮寫?
如果縮寫是唯一的或者與某些定義的選項完全匹配,則可以縮寫長選項名稱。
我想這樣做,因爲我收到的一段代碼的規範需要標誌的完全匹配,並且有很多標誌。
是否可以關閉getopt_long()
中的縮寫?從手冊頁:關閉getopt_long(optarg.h)中的縮寫?
如果縮寫是唯一的或者與某些定義的選項完全匹配,則可以縮寫長選項名稱。
我想這樣做,因爲我收到的一段代碼的規範需要標誌的完全匹配,並且有很多標誌。
Codeape,
看來沒有辦法禁用縮寫功能。您並不是唯一希望獲得此功能的人。請參閱:http://sourceware.org/bugzilla/show_bug.cgi?id=6863
不幸的是,這似乎glibc的開發者不希望的選擇,因爲上面「WONTFIX」就解決了鏈接的錯誤報告。你可能是出於運氣這裏: - \
如果使用argp_parse(),而不是getopt的()(高reccommended,BTW),您可以通過訪問由用戶輸入的確切標誌
state->argv[ state->next - 2 ]
這有點黑客,但應該工作。
這不是完美的解決方案,但你可以調用getopt_long(後檢查用戶給出確切ARG)(一般不超過開關)象下面這樣:
if (strcmp(argv[optind-1], "--longoption") == 0)
OPTIND點下一個,你需要處理的說法。因此,您可以使用optind-1訪問原始參數。
謝謝你的信息。 – Codeape 2011-03-04 06:39:29