Mike Parker:

除非​​C11​​改变了嵌套初化规则,应可编译.可显式嵌套:

stb_easy_font_color c = { {255,255,255,255} };

如未提交相应问题,请报告.

"​​标签​​"是跟在​​构或联​​关键字后名:

struct Foo {};

这里,​​Foo​​​是​​标签​​​.必须按​​struct Foo​​​声明​​构实例​​​.这样思考:声明​​整​​​时要加​​整​​​,对​​构​​​也是如此;​​"标签"​​​指定了​​结构的类型​​​,因此​​struct Foo x​​.

而​​typedef​​引入了别名:

typedef struct Bar {} Bar;

所以​​Bar​​现在是​​struct Bar​​的别名,且可按​​Bar x​​声明实例.

你例是这样的:

typedef struct {} stb_easy_font_color;

未指定​​标签​​​,所以编译器必须生成一个.在此,是​​__tag21​​​,而​​stb_easy_font_color​​​是​​struct__tag21​​的别名.

是的,如无​​别名​​​,​​错误消息​​​中用​​生成标签​​没用.


是的,用嵌套成功了:

typedef struct
{
unsigned char c[4];
} stb_easy_font_color;
stb_easy_font_color c = { { 255,255,255,255 } };
//d文件
void main(){}
//命令
dmd stuff.c main.d

默认,按第一个为​​名字​​​.可用​​of​​来改.