从VS 2003迁移到VS 2008期间的问题

时间:2009-08-21 15:55:03

标签: visual-c++ windows-vista migration

我已经将我的一个Visual Studio 2003项目转换为VS2008,当我尝试在VS2008中构建项目时,我得到了下面提到的错误。

在oledb.h中,我有

typedef LONG DBROWCOUNT;

在sybdb.h中,我有

#define DBROWCOUNT      16

编译时,我收到以下错误:

c:\program files\microsoft sdks\windows\v6.0a\include\oledb.h(633) : error C2143: syntax error : missing ';' before 'constant'
c:\program files\microsoft sdks\windows\v6.0a\include\oledb.h(633) : error C2059: syntax error : 'constant'
c:\program files\microsoft sdks\windows\v6.0a\include\oledb.h(3005) : error C2059: syntax error : 'constant'

如果我对//#define DBROWCOUNT 16发表评论,那么这些错误就会解决,但我不应该对代码进行更改,所以请提前帮助我解决此错误。

2 个答案:

答案 0 :(得分:0)

问题似乎是DBROWCOUNT定义为16,因此它被预处理器替换,导致行

typedef LONG DBROWCOUNT; 

转换为

typedef LONG 16; 

预处理后,这显然是一个错误。但是,如果没有查看代码,我就不能说为什么在vs2003中没有发生这种情况。

答案 1 :(得分:0)

虽然我不能说这不是VC 2003的问题,但这里的主要问题是你已经将DBROWCOUNT定义为类型和宏常量(如你所知,这是不允许的。 )您将不得不在某处进行更改,否则您将无法修复编译器错误。如果oledb.h是一个系统头,那么更改必须是你的常量:

#define DBROWCOUNT 16

您可以将define宏更改为以下内容:

#define dbRowCount_k 16

然后在您的代码中使用DBROWCOUNT替换dbRowCount_k,并将该值用作整数(而不是类型)?