错误C2059:语法错误:'}'将c源文件添加到项目中

Sam*_*Sam 2 c c++ cocos2d-x

我正在为Windows Phone 8的visual studio express编写一个C++应用程序.

我正在尝试使用flite,一个用c编写的文本到语音库,到目前为止我已经添加了它的源文件和头文件,并且我已经设置了在所有单个c文件上使用预编译头文件的选项,但是源文件仍然没有编译,而是编译器抱怨(很多次):

 error C2059: syntax error : '.'
 error C2059: syntax error : '}'
Run Code Online (Sandbox Code Playgroud)

它在flite源代码中为这段代码抱怨这些问题:

DEF_STATIC_CONST_VAL_STRING(ffeature_default_val,"0");
Run Code Online (Sandbox Code Playgroud)

DEF_STATIC_CONST_VAL_STRING的定义是:

#define DEF_CONST_VAL_STRING(N,S) const cst_val N = {{.a={.type=CST_VAL_TYPE_STRING,.ref_count=-1,.v={.vval= (void *)S}}}}
Run Code Online (Sandbox Code Playgroud)

在这里你可以看到"." 和编译器抱怨的"}".我还没有修改过c源代码,它是为iOS和Android项目构建的,所以我假设我没有掌握如何在visual express中包含C文件.另外,在Visual Express中,.c文件旁边的图标是"++":/

任何帮助是极大的赞赏.

Ada*_*eld 5

这个语法:

struct MyStruct someObject = {.foo = bar, .baz = quux};
Run Code Online (Sandbox Code Playgroud)

被称为指定初始化器.它只在C99的C99方言中有效,它在C89和所有版本的C++中都是无效的.Microsoft Visual Studio的C编译器不符合C99,因此无法编译该代码.您必须将代码转换为使用C89或C++,或使用支持C99的其他编译器.