【发布时间】:2018-12-30 10:30:25
【问题描述】:
对于嵌入式程序,我经常将数据表转换为标头#defines,然后将其放入 .c 程序中的变量/数组中。
我刚刚编写了一个转换工具,它可能会以这种格式产生大量输出,现在我想知道我是否应该意识到这种模式的任何限制。
标题示例:
#define BIG_IMAGE_BLOCK \
0x00, 0x01, 0x02, 0x03, \
0x04, 0x05, 0x06, 0x07, \
/* this goes on ... */ \
0xa8, 0xa9, 0xaa, 0xab
代码示例(avr-gcc):
const uint8_t ImageData[] PROGMEM = {
BIG_IMAGE_BLOCK
};
似乎无法找到这个特定问题的答案,似乎被所有询问标识符、行长和宏重新评估限制的人淹没了。
【问题讨论】:
-
C99 5.2.4.1: 4095 个字符在一个逻辑行 [或更多]。
-
如果您使用的是 Gnu 工具集,将二进制文件直接写入文件可能会更容易,然后使用
objcopy将其转换为 ELF 对象。
标签: c macros preprocessor