我正在将我们的一个项目从VS6移动到VS2008,并且我使用mshtml.h遇到了以下编译错误:
1>c:\program files\microsoft sdks\windows\v6.0a\include\mshtml.h(5272) : error C2143: syntax error : missing '}' before 'constant'
1>c:\program files\microsoft sdks\windows\v6.0a\include\mshtml.h(5275) : error C2143: syntax error : missing ';' before '}'
1>c:\program files\microsoft sdks\windows\v6.0a\include\mshtml.h(5275) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files\microsoft sdks\windows\v6.0a\include\mshtml.h(28523) : error C2059: syntax error : '}'
1>c:\program files\microsoft sdks\windows\v6.0a\include\mshtml.h(28523) : error C2143: syntax error : missing ';' before '}'
1>c:\program files\microsoft sdks\windows\v6.0a\include\mshtml.h(28523) : error C2059: syntax error : '}'
在第一个错误语句落入mshtml.h代码的这一部分后,指向“True = 1”行:
EXTERN_C const GUID CLSID_CDocument;
EXTERN_C const GUID CLSID_CScriptlet;
typedef
enum _BoolValue
{ True = 1,
False = 0,
BoolValue_Max = 2147483647L
} BoolValue;
EXTERN_C const GUID CLSID_CPluginSite;
看起来像expert-sexchange的人也遇到了这个错误,但我宁愿不用“7天免费试用”来尊重该网站。
欢迎任何建议。
答案 0 :(得分:2)
你可能已经有了符号True&错误定义,尝试
#undef True
#undef False
包含该文件之前。
答案 1 :(得分:1)
可能有#define改变了一些东西。尝试在.cpp上运行预处理器并生成.i文件。该设置位于项目属性页面中。
编辑:此外,您可以通过滚动到页面底部从其他专家网站获得答案。他们必须这样做,否则谷歌会将他们从索引中删除。
答案 2 :(得分:1)
您在当前编译文件中还有哪些其他代码?可能是True
已被宏定义为1
。这可以解释错误。
答案 3 :(得分:0)
谢谢你们。我为那些#undef找到了正确的位置。我把它们放在类似于#include <atlctl.h>
之前的类头文件中,似乎可以解决这个问题。
感谢关于其他专家网站的提示,我必须牢记这一点。