Это не возможно напрямую, так как текстовый файл должен быть обработан в первую очередь. Вы могли бы написать довольно простой скрипт, который выполнял бы соответствующее экранирование и добавил #define
, создавая подходящий заголовочный файл.
Как правило, текстовый файл на самом деле не нужен как расширение макроса препроцессора, однако вам необходимо, чтобы данные файла отображались в объектном файле и были доступны, как если бы они были extern char[]
.
Для этого есть два подхода. Облегченный способ заключается в использовании ассемблера типа yasm с директивой incbin
для создания объектного файла, в котором данные файла представлены в виде помеченного раздела. e.g.:
global f_txt
f_txt:
incbin "f.txt"
Затем в файле C вы можете объявить:
extern char f_txt[];
Более переносимый способ - использовать утилиту наподобие xxd -i
для преобразования данных в файл C с массивом char, записанным как 'long hand'.