Ошибки компиляции в mshtml.h при компиляции с VS2008 - PullRequest
2 голосов
/ 23 сентября 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 ]

2 голосов
/ 23 сентября 2008

у вас уже могут быть символы True и False, попробуйте

#undef True 
#undef False 

перед включением этого файла.

1 голос
/ 23 сентября 2008

Какие другие инкоды есть в текущем компилируемом файле? Может быть так, что True был определен макросом уже как 1. Это объяснило бы ошибку.

1 голос
/ 23 сентября 2008

Возможно, #define что-то меняет. Попробуйте запустить только препроцессор в вашем .cpp и сгенерировать файл .i. Параметр находится на страницах свойств проекта.

РЕДАКТИРОВАТЬ: Кроме того, вы можете получить ответ от этого другого экспертного сайта, прокрутив в нижней части страницы. Они должны это сделать, иначе Google уберет их из своих индексов.

0 голосов
/ 23 сентября 2008

Спасибо, ребята. Я нашел правильное место для этих # undef. Я поместил их в заголовочный файл классов как раз перед #include <atlctl.h>, который, казалось, добился цели.

И спасибо за совет об этом другом экспертном сайте, я должен помнить об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...