使用VS2008编译mshtml.h中的错误

时间:2008-09-23 01:57:27

标签: c++ visual-studio-2008

我正在将我们的一个项目从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天免费试用”来尊重该网站。

欢迎任何建议。

4 个答案:

答案 0 :(得分:2)

你可能已经有了符号True&错误定义,尝试

#undef True 
#undef False 

包含该文件之前。

答案 1 :(得分:1)

可能有#define改变了一些东西。尝试在.cpp上运行预处理器并生成.i文件。该设置位于项目属性页面中。

编辑:此外,您可以通过滚动到页面底部从其他专家网站获得答案。他们必须这样做,否则谷歌会将他们从索引中删除。

答案 2 :(得分:1)

您在当前编译文件中还有哪些其他代码?可能是True已被宏定义为1。这可以解释错误。

答案 3 :(得分:0)

谢谢你们。我为那些#undef找到了正确的位置。我把它们放在类似于#include <atlctl.h>之前的类头文件中,似乎可以解决这个问题。

感谢关于其他专家网站的提示,我必须牢记这一点。