...error C2059: syntax error : '}'是什么意思
发布网友
发布时间:2024-10-02 06:31
我来回答
共1个回答
热心网友
时间:2024-10-22 09:59
2059指错误类型,微软的内部编号
编译器错误
C2059语法错误
:“token”
该标记导致语法错误。
若要确定原因,则不仅要检查在错误信息中列出的行,还要检查该行上面的行。以下示例对包含左大括号的行生成了错误信息,而该错误的真正原因却出现在其上面的行中。
//
C2059a.cpp
int
main
)
//
C2059
No
opening
parenthesis.
{
}
如果对行的检查没有获得有关可能出现的问题的任何线索,则尝试注释掉在错误信息中列出的行以及可能出现在该行上面的若干行。
如果该错误信息在紧跟
typedef
变量的符号上出现,则检查该变量是否已在源代码中定义。
如果符号没有计算出任何结果(在使用
/Dsymbol=
编译时可能发生),则可能会获得
C2059。
//
C2059b.cpp
//
compile
with:
/DTEST=
#include
int
main()
{
#ifdef
TEST
printf("\nTEST
defined
%d",
TEST);
//
C2059
#else
printf("\nTEST
not
defined");
#endif
}
可能收到
C2059
的另一个特定原因是编译在函数的默认参数中指定了结构的应用程序。参数的默认值必须是一个表达式。初始值设定项列表(如用于初始化结构的初始值设定项列表)不是表达式。下面的示例生成
C2059:
//
C2059c.cpp
struct
ag_type
{
int
a;
float
b;
};
void
func(ag_type
arg
=
{5,
7.0});
//
C2059
其解决方法是定义一个执行所需初始化的构造函数。
struct
ag_type
{
int
a;
float
b;
ag_type(int
aa,
float
bb)
:
a(aa),
b(bb)
{}
};
void
func(ag_type
arg
=
ag_type(5,
7.0));
int
main()
{
}
如果您在类外定义成员模板类或函数,也可能获得
C2059。有关更多信息,请参见知识库文章
Q241949。
第一种:
int
main
)
{
}
它会引起C2059错误,错误信息:error
C2059:
syntax
error
:
)
第二种:
#include
#define
TEST
int
main(int
argc,
char*
argv[])
{
#ifdef
TEST
printf(\nTEST
defined
%d,
TEST);
#else
printf(\nTEST
not
defined);
#endif
return
0;
}
它也会引起C2059错误,错误信息:error
C2059:
syntax
error
:
)
另外一种:
struct
ag_type
{
int
a;
float
b;
};
void
func(ag_type
arg
=
{5,
7.0});
它也会引起C2059错误,错误信息:error
C2059:
syntax
error
:
)
还会附带error
C2143:。
第三种
头文件互耦