1509

8 分钟

#C 语言的预处理文件嵌入指令 #embed

文件嵌入指令(#embed)使用被包含的文件数据替换自身。格式为:

#embed "/path/to/file" 参数列表
  • 相对路径的起点为当前文件所在目录
  • 参数列表可省略

例如:

const uint8_t image_data[] = { #embed "image.png" };

经过预处理后得到:

const uint8_t image_data[] = { 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,4,56, // 省略 ... };

#参数

参数标准说明示例
limit(n)__limit__(n)C23仅嵌入前 n 个字节的数据#embed "image.png" limit(10)
suffix(data)__suffix__(data)C23在嵌入的数据之后添加 data#embed "image.png" suffix('A', 'B', 'C')
prefix(data)__prefix__(data)C23在嵌入的数据之前添加 data#embed "image.png" prefix('A', 'B', 'C')
if_empty(data)__if_empty__(data)C23如果文件为空,则用 data 替换#embed "image.png" if_empty('e', 'm', 'p', 't', 'y', '\0')

#推荐阅读

#参考标准

  • C23 standard (ISO/IEC 9899:2024):
    • 6.10.2 Binary resource inclusion (p: 170-177)

创建于 2025/9/3

更新于 2025/9/3