我试着写一个可以和libconfig一起工作的应用程序。所以我有下一部分代码:
#include <stdio.h>
#include <stdlib.h>
#include <libconfig.h>
int main(int argc, char **argv)
{
if(argc > 1)
{
char *config_file_path = argv[1];
config_t cfg;
config_init(&cfg);
printf("loading config: %s...\n", config_file_path);
if (!config_read_file(&cfg, config_file_path))
{
fprintf(stderr, "%s:%d - %s\n", config_file_path,
config_error_line(&cfg), config_error_text(&cfg));
config_destroy(&cfg);
exit(EXIT_FAILURE);
}
long int port_number;
config_lookup_int(&cfg, "server_app.port", &port_number);
printf("port: %ld\n", port_number);
config_destroy(&cfg);
}
else
{
fprintf(stderr, "Wrong number of arguments. Usage: %s <cfg_file>\n", argv[0]);
exit(EXIT_FAILURE);
}
return EXIT_SUCCESS;
}
以及它的配置文件:
服务器.cfg
server_app:
{
port = 9034;
mail_queue_dir = "mail_queue";
@include "quote.cfg"
logs:
{
error_log = "logs/error.log";
};
connection_address = "127.0.0.1";
max_worker_number = 10;
number_of_pending_connections = 10;
};
报价.cfg
# file: quote.cfg
quote = "dsf";
编译之后,我尝试在params中用server.cfg运行main(),但在@include的行中总是会出现“语法错误”。有什么想法吗?
最佳答案
我用libconfig-1.4.9
尝试了您的配置,它工作了:
./cfg server.cfg
loading config: server.cfg...
port: 9034
您似乎正在使用一个旧版本,该版本在解析
@include
时存在错误,根据此change log判断,您应该升级到libconfig-1.4.3或更新版本:-----版本1.4.3------
2010年2月13日Mark Lindner
*lib/scanner.l-将@include与前面的空白匹配的错误修复程序
.
关于c - libconfig:@include指令上的语法错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13551203/