Верно или неверно: раздел имеет файл интерфейса и ноль или более файлов реализации. ⇐ C++
-
Гость
Верно или неверно: раздел имеет файл интерфейса и ноль или более файлов реализации.
В статье, опубликованной в Microsoft Learn под названием Учебное пособие по именованным модулям (C++), говорится следующее:
Раздел содержит файл интерфейса и ноль или более файлов реализации.
Похоже, что это простое утверждение о том, что каждый раздел должен иметь файл интерфейса, даже если из раздела не экспортируются никакие имена.
Утверждение появляется в конце статьи, в разделе «Файлы разделов модуля». Я видел то же самое заявление в блоге на сайте Modernescpp.com.
Вопрос: Верно ли это для стандарта ISO C++ или это ограничение, наложенное Microsoft на реализацию модулей?
Пример из стандарта C++
Когда я попытался ответить на этот вопрос, обратившись к стандарту C++, я не нашел прямого утверждения, ни того, ни другого.
Однако я нашел пример, в котором раздел с именем A:Internals не имеет интерфейсного модуля раздела. Это убедительный признак того, что ограничение Microsoft не распространяется на стандарт.
В то же время этот пример подтверждает идею о том, что реализация модулей Microsoft требует, чтобы раздел имел интерфейсный модуль. Без него пример не будет скомпилирован под MSVC.
Раздел 10.1 mod.unit стандарта C++ содержит следующий пример:
// A.ixx // Единица перевода №1: экспортный модуль А; экспорт-импорт :Foo; экспортировать int baz(); // A-Foo.ixx // Блок перевода №2: модуль экспорта A:Foo; импорт: Внутренние устройства; экспорт int foo() { return 2 * (bar() + 1); } // A-Internals.cpp // Блок перевода №3: модуль А:Внутренности; интервал бар(); // A.cpp // Блок перевода №4: модуль А; импорт: Внутренние устройства; int bar() { return baz() - 10; } int baz() {возвращение 30; } Я добавил следующий модуль, содержащий функцию main, простой драйвер, вызывающий функции foo и baz.
// main.ixx модуль экспорта основной; импорт стандартный; импорт А; экспортировать int main() { станд::cout
В статье, опубликованной в Microsoft Learn под названием Учебное пособие по именованным модулям (C++), говорится следующее:
Раздел содержит файл интерфейса и ноль или более файлов реализации.
Похоже, что это простое утверждение о том, что каждый раздел должен иметь файл интерфейса, даже если из раздела не экспортируются никакие имена.
Утверждение появляется в конце статьи, в разделе «Файлы разделов модуля». Я видел то же самое заявление в блоге на сайте Modernescpp.com.
Вопрос: Верно ли это для стандарта ISO C++ или это ограничение, наложенное Microsoft на реализацию модулей?
Пример из стандарта C++
Когда я попытался ответить на этот вопрос, обратившись к стандарту C++, я не нашел прямого утверждения, ни того, ни другого.
Однако я нашел пример, в котором раздел с именем A:Internals не имеет интерфейсного модуля раздела. Это убедительный признак того, что ограничение Microsoft не распространяется на стандарт.
В то же время этот пример подтверждает идею о том, что реализация модулей Microsoft требует, чтобы раздел имел интерфейсный модуль. Без него пример не будет скомпилирован под MSVC.
Раздел 10.1 mod.unit стандарта C++ содержит следующий пример:
// A.ixx // Единица перевода №1: экспортный модуль А; экспорт-импорт :Foo; экспортировать int baz(); // A-Foo.ixx // Блок перевода №2: модуль экспорта A:Foo; импорт: Внутренние устройства; экспорт int foo() { return 2 * (bar() + 1); } // A-Internals.cpp // Блок перевода №3: модуль А:Внутренности; интервал бар(); // A.cpp // Блок перевода №4: модуль А; импорт: Внутренние устройства; int bar() { return baz() - 10; } int baz() {возвращение 30; } Я добавил следующий модуль, содержащий функцию main, простой драйвер, вызывающий функции foo и baz.
// main.ixx модуль экспорта основной; импорт стандартный; импорт А; экспортировать int main() { станд::cout
Мобильная версия