Когда определение экспортируемой функции доступно импортирующему ЕП?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Когда определение экспортируемой функции доступно импортирующему ЕП?

Сообщение Anonymous »

Рассмотрим следующую единицу перевода:

Код: Выделить всё

export module Example;

export inline void fn1();
export void fn2();
export void fn3();

void fn1() {}
void fn2() {}

module :private;

void fn3() {}
Во-первых, я понимаю, что fn1() работает как «традиционная» встроенная функция в заголовочном файле — в частности, ее определение доступно для встраивания при импорте TU.
Во-вторых, из примера cppreference я понял, что, поскольку оно находится во фрагменте частного модуля, определение fn3() определенно не доступно для импорта TU (и поэтому я могу изменить его, не затрагивая ABI).
Мой вопрос касается fn2(), который определен в модуле интерфейса модуля, но не помечен ключевым словом inline:
  • Может ли импортирующая единица перевода видеть определение fn2()?

    Если да, то в чем разница между f1() и f2()?
  • Если нет, то в чем разница между f2() и f3()?


Подробнее здесь: https://stackoverflow.com/questions/798 ... porting-tu
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»