c++ - 推荐的配置/偏好处理方法

标签 c++ embedded config libraries multiplatform

最终目标是让最终用户/管理员能够通过 CLI 开关(即 "--foo=31 --bar=0")和/或配置文件(即 cat/etc/blah.conf -> "foo=31\nbar=0\n")。有问题的语言是 c++,尽管很多都不是很重要。目标是从 ARMv6 (Raspberry Pi) 到 x86_64 的任何东西上的 GNU/Linux。

有两个明显的解决方案,使用基本的标准库功能编写 argc/v 和 conf 文件解析器; OR,使用现有的库,如 libconfig .我过去的做法是始终使用库而不是重新发明轮子;但是,这是我第一次针对嵌入式平台。这让我想知道手写这段代码所带来的浪费和错误风险是否超过了更少的依赖项和可能更小的代码带来的好处。

那么问题是,在这种情况下,该怎么办?而且,在评估多平台代码的库与自己开发代码之间的选择时,是否有经验法则可供使用?

最佳答案

我理解您的痛苦:开发时间/便利与占用空间。 就个人而言,我坚信使用现有的包最终总是有益的,只要您选择主动维护的包。 Libconfig 似乎不太活跃,在我的书中,这对于一个成熟的包来说仍然是一个可以接受的状态。

对于嵌入式 Linux,关于占用空间,您必须考虑更大的图景。您的应用程序是唯一需要 libconfig 的应用程序吗? rootfs 上的其他应用程序是否需要 libxml 之类的东西?在那种情况下 - 使用 libxml。所以检查你的 rootfs 是否有类似的库。

其次,你说的是大约。 150kB 磁盘空间。真的值得为之费尽心思吗?有大量的包裹比这更大,因此能够从您的列表中删除另一个包裹可能是一种更好的方式来花费您的精力。 不要担心 RAM 的使用——那会更少。 Linux 只会在使用时从磁盘加载代码和数据页。

关于c++ - 推荐的配置/偏好处理方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23327506/

相关文章:

c++ - 如何通过我自己的函数传递boost::asio::yield_context?

c - Atmel 处理器已复位,但 MCUSR 中未指示复位源

string - 如何在Config.Groovy中使用设置的变量并将其连接

embedded - 通过 SPI 的芯片到芯片通信协议(protocol)

php parse_ini_file oop & 深度

java - Tomcat 不提供简单的 HTML 页面 (HTTP 404)

c++ - 如何从 std::function 推断返回值类型?

c++ - 在 OpenCL 中将一半转换为 float

c++ - 如何在 Windows Phone 8.1 中通过蓝牙连接发送字符

统计一个字节中 '1s'的个数