请教下关于函数传参的一点疑问

2022 年 2 月 7 日
 yezheyu

像普通的函数传参就是在 mian 函数内部传递

而对于 mian 函数本身需要传参,一般是在脚本运行时,在终端中以命令行参数的形式传递给 mian 函数

如果参数固定不变,可以把参数直接写到环境变量中,脚本执行时无需指定参数,而是从环境变量中加载

如果参数比较多,可以把参数写入到配置文件中或者注册表中

我上面的理解对吗?

3065 次点击
所在节点    程序员
12 条回复
MacDows
2022 年 2 月 7 日
main
yezheyu
2022 年 2 月 7 日
@MacDows 丢人了,写错了,哈哈
wangyu17455
2022 年 2 月 7 日
对
J55s5
2022 年 2 月 7 日
都可以,反正就参数获取方式不同而已
jim9606
2022 年 2 月 7 日
一般程序启动设置是有一个覆盖顺序的,例如硬编码默认值-全局配置文件(%ProgramData%或 HKLM)-本地配置文件(%APPDATA%或 HKCU)-环境变量-命令行,后者可覆盖前者的值,main 函数按顺序读取,生成完整参数表传给程序入口。
yezheyu
2022 年 2 月 8 日
@jim9606 多谢解惑

对 windows 下的注册表不太了解

注册表这个东西是相当于共用的配置文件吗?
dangyuluo
2022 年 2 月 8 日
传参这种事有很多种办法,你说的只是其中一种,没有对错之分。你还可以把参数写在 json/yaml/toml 文件里,把文件传给 exe ,或者是从某个 URL 获取参数,甚至你可以写一个语音识别,程序运行的时候你对着麦克风把参数念出来。一切都取决与你写程序的目的和限制条件。

没在 Windows 下写过程序,不过注册表也是一种可以把参数传进去的方法。
loginv2
2022 年 2 月 8 日
@yezheyu 类似于 /etc 目录。是一个配置文件数据库
yezheyu
2022 年 2 月 8 日
@loginv2 理解了,多谢
secondwtq
2022 年 2 月 8 日
典中典面函数 ...
不过楼主思路是对的,各种花样折腾来折腾去效果和传参是一样的
jim9606
2022 年 2 月 9 日
@yezheyu
可以这么理解,一个支持并发读写(多进程读写相同项)和权限控制的结构化数据库。
在 HDD 和小内存时代,注册表可以减少大量小文件的创建和读取操作,提高启动速度。现在随着 FS 改进和 SSD ,这个积极作用已经不太重要了,所以追求跨平台能力的程序又回到配置文件了。
通常,环境变量和命令行是传递一次性使用,不需要持久化的配置。密码类参数通常用环境变量传递。
Linux 类似注册表的技术是 dconf ,主要是 GNOME 全家桶在用。
yezheyu
2022 年 2 月 9 日
@jim9606 谢谢,明白了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/832314

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX