是否有一种完全符合标准的方法来使编译器将文件的确切(二进制)内容粘贴到源文件中

Is there a fully Standard compliant way to make the compiler paste the exact (binary) contents of a file in a source file?

本文关键字:二进制 源文件 文件 一种 完全符合 标准 编译器 是否 方法      更新时间:2023-10-16

我想提供Qt的资源系统(基本上是一个包含文件列表的xml,它被预编译成一个c++源文件,其中包含这些文件的二进制字节内容的一堆char数组,被编译成二进制)的易于使用的纯c++。

所以我想知道,第一个和几乎唯一的要求,甚至是可能的吗?

我可以将二进制文件编译成目标文件吗?

我知道在c++ 11原始字符串文字中#包含另一个文件是不可能的,但也许有一种方法可以解决这个问题。我想放弃预编译步骤。有办法吗?

在最坏的情况下,也许一个链接器脚本和代码中的一些巫术来访问这些字节可以使这个功能,但我不知道这是否比预编译步骤更好(这当然更透明…)。

但是我不知道这是否比预编译步骤好(这当然更透明…)。

^^^^就是这样(强调我的)。

我没有看到有什么标准兼容#include二进制文件直接到你的代码。

你需要一个工具将二进制文件转换成类似

的格式
uint8_t myBinaryData = { 0x00, 0xfb, 0x42, /* ... */ }

并最终包含