有没有办法在编译时将整个文本文件作为字符串包含在 C 程序中?

就像是:

  • 文件.txt:

    This is
    a little
    text file
    
  • 主要.c:

    #include <stdio.h>
    int main(void) {
       #blackmagicinclude("file.txt", content)
       /*
       equiv: char[] content = "This is\na little\ntext file";
       */
       printf("%s", content);
    }
    

获取一个在标准输出上打印"这是一个小文本文件"的小程序

目前我使用了一个 hackish python 脚本,但它很丑陋并且仅限于一个变量名,你能告诉我另一种方法吗?

答案

我建议使用 (unix util)xxd为了这。

$ echo hello world > a
$ xxd -i a

输出:

unsigned char a[] = {
  0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x0a
};
unsigned int a_len = 12;

来自: stackoverflow.com