文件嵌入指令(#embed)使用被包含的文件数据替换自身。格式为:
#embed "/path/to/file" 参数列表
相对路径的起点为当前文件所在目录
参数列表可省略
#embed 是 C23 标准的新特性。例如:
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)