我已经将我的一个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
发表评论,那么这些错误就会解决,但我不应该对代码进行更改,所以请提前帮助我解决此错误。
答案 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
,并将该值用作整数(而不是类型)?