我正在为Windows Phone 8的visual studio express编写一个C ++应用程序。
我正在尝试使用flite,一个用c编写的文本到语音库,到目前为止我已经添加了它的源文件和标题,并且我已经设置了使用预编译标题的选项在所有个体上都没有c文件,但是源文件仍然没有编译,而是编译器抱怨(很多次):
error C2059: syntax error : '.'
error C2059: syntax error : '}'
它在flite源代码中抱怨这些代码的这些问题:
DEF_STATIC_CONST_VAL_STRING(ffeature_default_val,"0");
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}}}}
在这里你可以看到“。”和编译器抱怨的“}”。我还没有修改过c源代码,它是为iOS和Android项目构建的,所以我假设我没有掌握如何在visual express中包含C文件。 另外,在Visual Express中,.c文件旁边的图标是“++”:/
非常感谢任何帮助。
答案 0 :(得分:5)
此语法:
struct MyStruct someObject = {.foo = bar, .baz = quux};
称为指定的初始值设定项。它只在C99的C99方言中有效,它在C89和所有版本的C ++中都是无效的。 Microsoft Visual Studio的C编译器不符合C99,因此无法编译该代码。您必须将代码转换为使用C89或C ++,或使用支持C99的其他编译器。
答案 1 :(得分:2)