Rob*_*Kam 5 c configuration ini initialization
在C中,如何使用键值对配置某些程序的初始设置,使用以下任何一个或全部:命令行上的纯文本配置文件,环境变量和选项.此外,如何确定哪个方法的值超过其他两个方法中的任何一个.然后,如果已更改值,则可以选择更新配置文件.
最简单的方法是什么?如果有的话,最常用的方法是什么?是否有一个,最好是小型的开源程序,它提供了一个很好的例子来说明如何做到这一点?
基础:
哪个设置源应该相互覆盖取决于应用程序,但在我看来,一般命令行参数>环境变量>配置文件最有意义.
以下是使用命令行覆盖环境从环境和命令行获取配置的示例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, const char* const* argv) {
int i;
const char* myConfigVar;
// get default setting from environment
myConfigVar = getenv("MY_CONFIG_VAR");
// if the variable wasn't defined, initialize to hardcoded default
if (!myConfigVar)
myConfigVar = "default value";
// parse commandline arguments
// start at 1, because argv[0] contains the name of the program
for (i = 1; i < argc; ++i) {
if (strcmp("--my-config-var", argv[i]) == 0) {
if (i + 1 < argc)
myConfigVar = argv[i + 1];
else
printf("missing value for my-config-var argument\n");
}
}
printf("myConfigVar = '%s'\n", myConfigVar);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
您已经看到它很快变得非常冗长乏味,因此如果存在所需的目标平台,或者至少将这种代码考虑到许多函数中,那么最好使用现有的库.
另一个有趣的选择是将脚本语言绑定到您的应用程序,然后您可以使您的应用程序只读取并"执行"您的设置文件,用户可以配置设置文件以从环境中读取一些设置,从命令行读取一些设置,例如.这实际上取决于应用程序的类型和大小以及目标受众是否值得这样做.