Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Deklaracje module, importi export są dostępne w języku C++20 i wymagają przełącznika /std:c++20 kompilatora lub nowszego. Aby uzyskać więcej informacji, zobacz Omówienie modułów w języku C++.
module
Umieść deklarację module na początku pliku implementacji modułu, aby określić, że zawartość pliku należy do nazwanego modułu.
module ModuleA;
export
export module Użyj deklaracji dla podstawowego pliku interfejsu modułu, który domyślnie ma rozszerzenie.ixx. Jeśli chcesz użyć innego rozszerzenia, użyj przełącznika /interface , aby skompilować go jako interfejs modułu.
export module ModuleA;
W pliku interfejsu export użyj modyfikatora nazw, które mają być częścią interfejsu publicznego:
// ModuleA.ixx
export module ModuleA;
namespace ModuleA_NS
{
export int f();
export double d();
double internal_f(); // not exported
}
Nazwy nieeksportowane nie są widoczne dla kodu, który importuje moduł.
import ModuleA;
int main() {
ModuleA_NS::f(); // OK
ModuleA_NS::d(); // OK
ModuleA_NS::internal_f(); // Ill-formed: error C2065: 'internal_f': undeclared identifier
}
Słowo export kluczowe może nie być wyświetlane w pliku implementacji modułu. Po export zastosowaniu do nazwy przestrzeni nazw eksportowane są wszystkie nazwy w przestrzeni nazw.
import
import Użyj deklaracji , aby nazwa modułu był widoczny w programie. Deklaracja import musi pojawić się po deklaracji module i po jakichkolwiek dyrektywach #include , ale przed wszelkimi deklaracjami w pliku.
module ModuleA;
#include "custom-lib.h"
import std;
import myModule;
// begin declarations here:
template <class T>
class Baz
{...};
Uwagi
Oba import i module są traktowane jako słowa kluczowe tylko wtedy, gdy pojawiają się na początku wiersza logicznego:
// 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 ;
Specyficzne dla firmy Microsoft
W języku Microsoft C++tokeny import i module są zawsze identyfikatorami i nigdy słowami kluczowymi, gdy są używane jako argumenty makra.
Przykład
#define foo(...) __VA_ARGS__
foo(
import // Always an identifier, never a keyword
)
Koniec specyficzny dla firmy Microsoft
Zobacz także
Omówienie modułów w języku C++
Importowanie standardowej biblioteki języka C++ przy użyciu modułów