如果我这样做:
static char const file[] = {
#embed "this.c"
};
然后:
static char const copy[sizeof file];
我假设
sizeof file
将是一个编译时常量,并且是文件的实际大小。这个结论正确吗?
(我无法使用 GCC 13 或 Clang 18 进行编译,因此无法运行代码。)
embed
扩展为有效的初始化列表,它应该可以工作。
#embed
表达式是有效的整数常量表达式,只要它们不使用 VLA 操作数,根据 C23 N3096 6.6:
整数常量表达式应具有整数类型,并且只能具有... /--/ ...
sizeof
结果为整数常量的表达式,...