2015-09-19 2 views
1

Мне нужно включить файл в моей программе C, который имеет кучу шестнадцатеричных констант в виде:C включает файл гекса константу

0x00, 0x00, 0x00, 0x00, 0x01, 
0x00, 0x18, 0x00, 0xE8, 0x01, 
0xFF, 0xF2, 0x00, 0x20, 0x01, 
0x00, 0x00, 0x00, 0xE2, 0x01, 

выше файл выводится из другого компилятора (в частности, Sigma Studio, для 1701.) и время от времени будет меняться, поэтому я не хочу вручную массировать файл каждый раз, когда он изменяется.

Что вы видите, это фрагмент кода для 1701, и я программирую 1701 из другого контроллера u. Этот файл данных ASCII хочет быть включен в программу u-контроллера C.

Константы начинаются в столбце 1, а 1024 строки содержат по пять 8 бит констант.

Я попытался сделать программу ассемблера с включаемого заявление, и получил сообщение об ошибке, информирующее мои только метки могут начинаться в колонке 1.

В идеале, я хотел бы начать определить блок, а затем включить файл , затем завершите блок.

Любые идеи, как я могу это сделать?

ответ

4

Предполагая, что ваш файл называется data и что она отформатирована так, как показано в этом вопросе, вы можете сделать это:

#include <stdio.h> 

char data[] = { 
#include "data" 
}; 

int main() { 
    printf("%zu\n", sizeof(data)); 
    return 0; 
} 

Файл выше содержит текст из файла с именем "data" в фигурных скобках , создавая массив из char s в массиве char data[].

Когда приведенный выше пример скомпилирован с данными вашего вопроса, он печатает 20 при запуске.

Смежные вопросы