2007年9月6日星期四

error C2059 种种

error C2059 种种

发布者:许超  发表日期:2007-02-07 15:13:23.09



一日遇到C2059错误,google搜索发现C2059的错误表现有多种。

这里整理一些以及自己遇到的情况,供大家借鉴解决。

第一种:


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:。

第三种,也是本人遇到的,

刚开始,比较怪异,现象:

1 使用openssl库,在另一个工程里,ok,没问题。

2 在出问题工程里,不在.h文件出现 #include ,ok,正常。

3 在出问题工程里,在.h文件出现 #include 立即出现C2059错误。

此时,在openssl路径配置正确情况下,在某一.h文件只写入

#include

会出现error C2059: syntax error : constant 错误。

解决:

经仔细研究,对比,试验,发现,openssl的头文件有顺序之分。加入下面句子,即

正常。

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

根据经验,这是一例头文件互耦比较严重的问题,遇到此种情况,需调整.h文件

出现序列即可解决此类C2059问题。

总结:人们在设计各种规则的同时,隐含的也设计出来了各种烦恼。

人们就是既要享受这些规则带来的好处,也要经受问题的刁扰。

经验告诉我们,利大于弊。

没有评论: