在编译时从文件填充数组
Populate an array at compile-time from file
我正在为裸机环境交叉编译一个程序,我想用我存储在文件中的数据填充一个数组。有没有办法在编译时进行此读取?
原因:将数据复制粘贴到源中似乎很丑陋。
构建
过程的一部分可以是运行一个程序,该程序将文件作为输入并生成一个C++源文件,该文件将其定义为数组,如下所示:
char arrayFromFile[] = {
0x01, 0x02, 0x99, ... and so on
};
程序本身可能是源代码的一部分。
然后只需在构建周期的稍后阶段编译该程序即可。例如,您可能有以下makefile
段:
generate: generate.cpp
g++ -o generate generate.cpp # build data generator
data.cpp: data.dat
generate data.dat >data.cpp # create c file with data
prog: prog.cpp data.cpp
g++ -o prog prog.cpp data.cpp # create program from source and data
GCC和Clang都可用于将任意文件作为静态字符串打包到.o
中。最终,将它使用的符号名称映射到程序员认为该文件的内容(特别是如果构建中的"物理"和"逻辑"文件路径不是一回事),但此处演示了该过程的核心,忽略了极端情况, 归结为:
gcc ... -Wl,--format=binary -Wl,$FILE1 -Wl,$FILE2 ...
(使用 Bazel 作为构建工具的项目可能只能直接使用包含的 bzl 规则。
相关文章:
- C++ 填充数组时遇到问题
- 如何使用同时设置计数和填充数组的函数
- 如何使填充数组的函数发送到函数?而不是其参数中的数组
- 如何使用文件填充数组并将其与用户输入C 进行比较
- 使用 memset 填充数组会显示垃圾
- Visual Studio从文件中填充数组时中断
- 分段 填充数组时出错
- 用不同的值填充数组/矢量的边缘和中心
- 使用相同的数据填充数组对象或使用指针
- 是否可以使用三元运算符"?"在 C/C++ 中填充数组列表?
- 填充数组(写入位置0x00000000的访问冲突)
- 从文件中读取输入并填充数组以存储数据供以后使用
- c++当循环在填充数组时没有正确终止时,希望能帮助退出此循环
- 填充数组会导致数组周围的堆栈损坏
- Cuda有效地将数据插入到未排序的填充数组中
- 填充数组的 C++ 函数
- 访问部分填充数组上的第一个打开元素
- 将一个字节数组从C#传递到C++填充数组的C++com对象中
- 如何使用向量中的信息填充数组并从数组中选择随机项
- C,填充数组使用dec2bin转换器