编译时C ++程序中的大量数据

时间:2011-12-07 14:43:59

标签: c++

我有大约30个XML文件,我的C ++进程(在运行时)应解析并进行一些安装。

我觉得,不是在运行时使用XML,为什么我不能编写一个脚本来将XML文件编码到我自己的结构中并生成一个应该编译和构建的C ++程序?

我的意思是,我的脚本应该将编码结构填充为C ++程序中的变量赋值。

这样的东西
class generatedCode
{
private:
   unsigned char = ox11, ox22....
};

然后我的C ++进程将对此进行解码并执行安装而不是XML解析。

我的全部意图是通过某种方式将所有XML信息带入C ++进程内存。

有人可以建议,这是一个好方法吗?建议采取其他任何方式吗?

2 个答案:

答案 0 :(得分:1)

您确实可以将这些XML文件“编译”(即转换)为更紧凑的表示形式,甚至可以生成一个巨大的数组来用C ++代码表示它。

也许更简单的解决方案可能是将这些XML文件转换为内部表示,并使用一些快速内存投影机制(如Linux上的mmap)来访问它。

但您没有解释这些XML文件代表什么,以及您希望以后如何在应用程序中使用它们。

答案 1 :(得分:0)

也许我没有正确解释您的提案,但听起来您正在开始使用XML文件,这些文件描述了一些安装过程需要完成的过程。并且您希望避免通过将其转换为可编译为执行安装的C ++代码来解析xml。

如果要重复执行此“安装”,那么您建议的这种优化可能是值得的。但是你没有避免解析XML - 你需要解析它才能将它们转换成你的C ++程序!因此,您节省的是避免为每次运行重新解析XML,代价是有额外的文件(可执行文件)以及每当XML更改时都必须重新构建它们。

当然。如果我误解了这种情况,正如Roseanne Roseannadanna所说的那样,“别介意”:)