#c #module #c 20
Вопрос:
Я пытаюсь использовать модули c 20 в своем проекте в Visual Studio 2017 и MSVC.
Я следовал этому руководству, чтобы включить экспериментальные модули с c 17 в свой проект.
Моя проблема в том, что, когда я пытаюсь скомпилировать свой проект, я получаю некоторые ошибки, такие как следующие:
boost.1.77.0.0libnativeincludeboostinterprocessdetailwin32_api.hpp(926): error C2143: syntax error: missing ')' before 'module'
Я предполагаю, что это связано с тем, что включенные модули module
становятся ключевым словом, а библиотеки, которые его используют, испытывают проблемы с компиляцией.
Поэтому мой вопрос таков:
- Должны ли мои библиотеки быть совместимы с модулями, чтобы воспользоваться преимуществами последних?
- У вас есть какие-нибудь советы по решению этой проблемы?
Спасибо.
Комментарии:
1. Если вы хотите играть с модулями C 20, пожалуйста, используйте последнюю версию Visual Studio 2019 (16.11). В этой среде IDE предполагается, что модули должны полностью поддерживаться. Это далеко не так в MSVC 2017, только с некоторой предварительной поддержкой. И, конечно же, используйте
/std:c 20
2. Спасибо вам за ваш комментарий. К сожалению, я не могу обновить до VS2019. Но, если бы я смог обновиться до VS2019, первый вопрос все еще остается в силе: должны ли мои библиотеки быть совместимы с модулями?
3. Да, ваши библиотеки должны быть совместимы с модулями, чтобы их использовать. Модули C 20 вовсе не являются автоматической (волшебной) функцией, библиотеки должны быть тщательно разработаны для работы с ними. Для сторонних библиотек, я думаю, это произойдет не раньше, чем через несколько лет.
4. Окончательная версия модулей (C 20) содержит
module
контекстное ключевое слово для улучшения совместимости с подобным кодом.