我需要在我的C程序中包含一个文件,其中包含以下形式的一组十六进制常量:
0x00, 0x00, 0x00, 0x00, 0x01,
0x00, 0x18, 0x00, 0xE8, 0x01,
0xFF, 0xF2, 0x00, 0x20, 0x01,
0x00, 0x00, 0x00, 0xE2, 0x01,
上面的文件是从另一个编译器(特别是1701的Sigma Studio)输出的,并且会不时更改,因此我不想在每次更改时手动按下该文件。
你看到的是1701的代码片段,我正在从另一个u控制器编程1701。此ASCII数据文件希望包含在u控制器C程序中。
常量从第1列开始,有1024行,每行包含5个8位常量。
我尝试使用include语句创建一个asm程序,并收到一条错误消息,告知我的唯一标签可能从第1列开始。
理想情况下,我想启动一个定义块,然后包含该文件,然后结束该块。
我有什么想法可以做到这一点吗?
答案 0 :(得分:4)
假设您的文件名为data
,并且其格式与问题中显示的方式相符,您可以执行以下操作:
#include <stdio.h>
char data[] = {
#include "data"
};
int main() {
printf("%zu\n", sizeof(data));
return 0;
}
上面的文件包含大括号内名为"data"
的文件中的文本,在char
数组中生成char data[]
个数组。
如果使用您问题中的数据编译上述示例,则会在运行时打印20
。