带有演员的C初始化器,这有危险吗?
考虑以下:
struct Foo { char c; int i; }; void Bar(void) { struct Foo f = {0}; // use zero initializer // do some stuff f = (struct Foo) {'h', 1}; // copy different data into f, is this dangerous? }
上面的演员会被认为是危险的吗? 这是好风格吗?
这不是风格问题; 没有(struct Foo)
代码将无法编译。 它不是演员,它是C99特征的语法的一部分,称为复合文字 。