Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le module
dichiarazioni , import
e export
sono disponibili in C++20 e richiedono l'opzione /std:c++20
del compilatore o versioni successive. Per altre informazioni, vedere Panoramica dei moduli in C++.
module
Inserire una module
dichiarazione all'inizio di un file di implementazione del modulo per specificare che il contenuto del file appartiene al modulo denominato.
module ModuleA;
export
Usare una dichiarazione di export module
per il file di interfaccia principale del modulo, che ha un'estensione .ixx
per impostazione predefinita. Per usare un'estensione diversa, usare l'opzione /interface per compilarla come interfaccia del modulo.
export module ModuleA;
In un file di interfaccia, utilizzare il modificatore export
sui nomi destinati a far parte dell'interfaccia pubblica.
// ModuleA.ixx
export module ModuleA;
namespace ModuleA_NS
{
export int f();
export double d();
double internal_f(); // not exported
}
I nomi non esportati non sono visibili al codice che importa il modulo.
import ModuleA;
int main() {
ModuleA_NS::f(); // OK
ModuleA_NS::d(); // OK
ModuleA_NS::internal_f(); // Ill-formed: error C2065: 'internal_f': undeclared identifier
}
La export
parola chiave potrebbe non essere visualizzata in un file di implementazione del modulo. Quando export
viene applicato a un nome dello spazio dei nomi, vengono esportati tutti i nomi nello spazio dei nomi.
import
Usare una import
dichiarazione per rendere visibili i nomi di un modulo nel programma. La import
dichiarazione deve essere visualizzata dopo la module
dichiarazione e dopo qualsiasi #include
direttiva, ma prima di qualsiasi dichiarazione nel file.
module ModuleA;
#include "custom-lib.h"
import std;
import myModule;
// begin declarations here:
template <class T>
class Baz
{...};
Osservazioni:
Entrambi import
e module
vengono trattati come parole chiave solo quando vengono visualizzati all'inizio di una riga logica:
// 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 ;
Sezione specifica Microsoft
In Microsoft C++, i import
token e module
sono sempre identificatori e mai parole chiave quando vengono usati come argomenti di una macro.
Esempio
#define foo(...) __VA_ARGS__
foo(
import // Always an identifier, never a keyword
)
Fine della sezione specifica di Microsoft
Vedi anche
Panoramica dei moduli in C++
Importare la libreria standard C++ usando i moduli