module
, import
, export
import
Die module
Deklarationen und export
Deklarationen sind in C++20 verfügbar und erfordern den /experimental:module
Compilerschalter zusammen mit /std:c++20
oder höher (z/std:c++latest
. B. ). Weitere Informationen finden Sie unter Übersicht über Module in C++.
module
Platzieren Sie eine module
Deklaration am Anfang einer Modulimplementierungsdatei, um anzugeben, dass der Dateiinhalt zum benannten Modul gehört.
module ModuleA;
export
Verwenden Sie eine export module
Deklaration für die primäre Schnittstellendatei des Moduls, die Erweiterung .ixx
aufweisen muss:
export module ModuleA;
Verwenden Sie in einer Schnittstellendatei den export
Modifizierer für Namen, die Teil der öffentlichen Schnittstelle sein sollen:
// ModuleA.ixx
export module ModuleA;
namespace ModuleA_NS
{
export int f();
export double d();
double internal_f(); // not exported
}
Nicht exportierte Namen sind für Code, der das Modul importiert, nicht sichtbar:
//MyProgram.cpp
import ModuleA;
int main() {
ModuleA_NS::f(); // OK
ModuleA_NS::d(); // OK
ModuleA_NS::internal_f(); // Ill-formed: error C2065: 'internal_f': undeclared identifier
}
Die export
Schlüsselwort (keyword) werden möglicherweise nicht in einer Modulimplementierungsdatei angezeigt. Wenn export
auf einen Namespacenamen angewendet wird, werden alle Namen im Namespace exportiert.
import
Verwenden Sie eine import
Deklaration, um die Namen eines Moduls in Ihrem Programm sichtbar zu machen. Die import
Deklaration muss nach der module
Deklaration und nach allen #include
Direktiven, aber vor Deklarationen in der Datei angezeigt werden.
module ModuleA;
#include "custom-lib.h"
import std.core;
import std.regex;
import ModuleB;
// begin declarations here:
template <class T>
class Baz
{...};
Hinweise
Beide und import
module
werden nur dann als Schlüsselwort (keyword) behandelt, wenn sie zu Beginn einer logischen Zeile angezeigt werden:
// OK:
module ;
module module-name
import :
import <
import "
import module-name
export module ;
export module module-name
export import :
export import <
export import "
export import module-name
// Error:
int i; module ;
Microsoft-spezifisch
In Microsoft C++ sind die Token import
immer Bezeichner und module
nie Schlüsselwort (keyword), wenn sie als Argumente für ein Makro verwendet werden.
Beispiel
#define foo(...) __VA_ARGS__
foo(
import // Always an identifier, never a keyword
)
End Microsoft Specific
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für