В настоящее время я пытаюсь заставить старый проект в C ++ работать с более новыми инструментами: проект был разработан на Windows XP
с VC71
, и сейчас я пытаюсь заставить его работать на Windows 7
с VC100
.
У меня еще не было "большой" проблемы, но, тем не менее, у меня возникла последняя проблема с компиляцией, которая привела меня к некоторому коду - довольно неясному для меня.макроса (упрощенно) У меня проблемы с:
#define IMPORT_STD_PAIR( _keyClass_ ,_objectClass_) \
extern template struct std::pair< _keyClass_,_objectClass_ >; \
...
Ошибка:
C2955: 'std::allocator' : use of class template requires template argument list.
Я не совсем понимаю, что он должен делать (2-я строка), указать параметры по умолчанию для шаблонного класса?
Спасибо за помощь.
Редактировать: @Mark B: Спасибо за ваш ответ.Вы заставили меня понять, что происходит: ничего.
На самом деле, это моя вина, потому что я совсем не знаком с разработкой в Windows.Код был изначально:
#define IMPORT_STD_MAP( _import_directive_, _keyClass_ ,_objectClass_) \
extern template struct _import_directive_ std::pair<_keyClass_,_objectClass_>;
Я пренебрег _import_directive_, потому что он был почти «пустым» в каждом случае, кроме одного.Поэтому, когда он пуст, он просто создает экземпляр без имени, который на самом деле не имеет значения;но когда этот макрос принимает значение __declspec ( dllimport )
, это имеет гораздо больше смысла:)
Спасибо, что помогли мне понять это, я подумал, что это нечто более экзотическое, и спасибо за полезный совет по отладке.