2008-09-23 173 views
2

我把我们的项目之一从VS6到VS2008的过程是编译和我打同mshtml.h以下编译错误:编译mshtml.h错误与VS2008

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这部分代码,在“真= 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; 

它看起来像有人在专家sexchange碰到这个错误也来了,但我宁愿不要以“7天免费试用”来尊重该网站。

任何建议将是最受欢迎的。

+0

一直滚动到该页面的底部 - 答案将在那里unobscured – 2008-09-23 01:58:41

回答

1

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

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

1

在当前编译文件中有什么其他代码?可能是True已被宏定义为1。这将解释错误。

2

,你可能已经有符号真&假定义,包括文件之前尝试

#undef True 
#undef False 

+0

你是对的,我按照你的指示解决了问题。 – 2014-11-20 19:19:32

0

谢谢你们。我找到了那些#undef's的正确位置。我把它们放到类头文件中,就在似乎要做的一个#include <atlctl.h>之前。

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