C包含十六进制常量

时间:2015-09-19 01:29:59

标签: c assembly include

我需要在我的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列开始。

理想情况下,我想启动一个定义块,然后包含该文件,然后结束该块。

我有什么想法可以做到这一点吗?

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