Ошибка модулей с c 17 и Visual Studio 2017

#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 контекстное ключевое слово для улучшения совместимости с подобным кодом.