= {0}是什么意思?在C?

Seb*_*ian 2 c stack initialization

我找到了= {0};这个C代码示例中的构造,可以在tidy.sourceforge.net上找到 .该语句的右值是什么,它是ANSI C吗?

#include <tidy.h>
#include <buffio.h>
#include <stdio.h>
#include <errno.h>

int main(int argc, char **argv )
{
   const char* input = "<title>Foo</title><p>Foo!";
   TidyBuffer output = {0};
   TidyBuffer errbuf = {0};
Run Code Online (Sandbox Code Playgroud)

Fre*_*man 5

这会将结构中的所有字段(在您的情况下)初始化TidyBuffer为零.C中的规则是您可以在初始化子句中省略成员,其余的将初始化为零.在C++中,这也是合法的:

TidyBuffer output = {};
Run Code Online (Sandbox Code Playgroud)

  • `{}`不是C中的合法初始化.(它是合法的C++.)语法至少需要一个初始化程序; 见C99中的6.7.8p1. (2认同)