簡體   English   中英

函數可以訪問傳遞給main()的args嗎?

[英]Can a function access args passed to main()?

有沒有一種方法可以在main()之外訪問程序的args而不存儲對它們的引用?

程序參數存儲在程序的保留空間中,因此我看不到無法訪問它們的原因。 也許有些像const char** get_program_arguments()int get_program_arguments_count()但是我找不到它...

我的問題來自以下事實:我正在重寫公司內部許多程序中現在使用的庫,並且我需要訪問這些程序的公共參數而不更改它們。 例如,我需要程序名稱,但是不能使用::getenv("_")因為它們可以從各種shell中執行。 我不能使用GNU擴展,因為它需要在Linux,AIX,使用gcc,CC等的SunOS上工作。

某些系統確實提供對參數列表的訪問,或者至少提供argv[0] 但它是常見的做法main發生變異 argcargv選項處理期間,因此沒有可靠的正確答案為他們的一個全局接口應該返回什么。

除此之外,全局狀態通常是不可取的,而且它具有使任何低級函數嘗試分析他們可能不了解的程序參數的危害,這不利於調試,結果您最終不這樣做 將參數(或通過解碼得到的更好的,有意義的標志)傳遞給庫並不難。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM