#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)