Wann steht die Definition einer exportierten Funktion einer importierenden TU zur Verfügung?C++

Programme in C++. Entwicklerforum
Anonymous
 Wann steht die Definition einer exportierten Funktion einer importierenden TU zur Verfügung?

Post by Anonymous »

Betrachten Sie die folgende Übersetzungseinheit:

Code: Select all

export module Example;

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

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

module :private;

void fn3() {}
Erstens verstehe ich, dass fn1() wie eine „traditionelle“ Inline-Funktion in einer Header-Datei funktioniert – insbesondere ist ihre Definition für das Inlining beim Importieren von TUs verfügbar.
Zweitens entnehme ich aus dem Beispiel auf cppreference, dass die Definition von fn3() definitiv nicht für den Import verfügbar ist, da sie sich im privaten Modulfragment befindet TUs (und daher steht es mir frei, sie zu ändern, ohne die ABI zu beeinflussen).
Meine Frage betrifft fn2(), das in der Modulschnittstelleneinheit definiert, aber nicht mit dem Inline--Schlüsselwort markiert ist:
  • Kann eine importierende Übersetzungseinheit die Definition von fn2() sehen?

    Wenn ja, was ist der Unterschied zwischen f1() und f2()?
  • Wenn nein, was ist der Unterschied zwischen f2() und f3()?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post