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





Вероятно, это #define что-то меняет. Попробуйте запустить только препроцессор в вашем .cpp и сгенерировать файл .i. Настройка находится на страницах свойств проекта.
Обновлено: Кроме того, вы можете получить ответ с этого другого экспертного сайта, прокрутив страницу вниз. Они должны это сделать, иначе Google исключит их из своих индексов.
Какие еще инкоды есть в текущем компилируемом файле? Возможно, что True уже определен макросом как 1. Это объяснило бы ошибку.
возможно, у вас уже есть символы True и False, попробуйте
#undef True
#undef False
перед включением этого файла.
Вы правы, я решил проблему, следуя вашим инструкциям.
Спасибо ребята. Я нашел подходящее место для этих # undef. Я поместил их в файл заголовка классов непосредственно перед #include <atlctl.h>, который, похоже, помог.
И спасибо за подсказку об этом другом экспертном сайте, я должен это иметь в виду.
прокрутите страницу до конца - ответ будет незатенен