带有演员的C初始化器,这有危险吗?

Jos*_*itt 1 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?
}
Run Code Online (Sandbox Code Playgroud)

上面的演员会被认为是危险的吗?这是好风格吗?

Oli*_*rth 9

这不是风格问题; 没有的代码将无法编译(struct Foo).它不是演员,它是C99特征的语法的一部分,称为复合文字.