Ошибки компиляции при компиляции mshtml.h с помощью VS2008

Я занимаюсь переносом одного из наших проектов с 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-дневной бесплатной пробной версией».

Любые предложения приветствуются.


person Lou    schedule 23.09.2008    source источник
comment
прокрутите страницу до конца - ответ будет незатенен   -  person Lou Franco    schedule 23.09.2008


Ответы (4)


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

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

person Lou Franco    schedule 23.09.2008

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

#undef True 
#undef False 

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

person John Boker    schedule 23.09.2008
comment
Вы правы, я решил проблему, следуя вашим инструкциям. - person V-SHY; 20.11.2014

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

person Frank Krueger    schedule 23.09.2008

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

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

person Lou    schedule 23.09.2008