module
, import
, export
Příkazy module
, import
a export
deklarace jsou k dispozici v jazyce C++20 a vyžadují přepínač kompilátoru /experimental:module
spolu s /std:c++20
nebo novějším (například /std:c++latest
). Další informace naleznete v tématu Přehled modulů v jazyce C++.
module
module
Umístěte deklaraci na začátek souboru implementace modulu, abyste určili, že obsah souboru patří do pojmenovaného modulu.
module ModuleA;
export
export module
Použijte deklaraci pro soubor primárního rozhraní modulu, který musí mít příponu.ixx
:
export module ModuleA;
V souboru rozhraní použijte export
modifikátor názvů, které mají být součástí veřejného rozhraní:
// ModuleA.ixx
export module ModuleA;
namespace ModuleA_NS
{
export int f();
export double d();
double internal_f(); // not exported
}
Neexportované názvy nejsou viditelné pro kód, který importuje modul:
//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
}
Klíčové export
slovo se nemusí objevit v souboru implementace modulu. Pokud export
se použije na název oboru názvů, exportují se všechny názvy v oboru názvů.
import
import
Pomocí deklarace můžete v programu zobrazit názvy modulů. Deklarace import
musí být uvedena module
za prohlášením a za všemi #include
direktivami, ale před všemi deklaracemi v souboru.
module ModuleA;
#include "custom-lib.h"
import std.core;
import std.regex;
import ModuleB;
// begin declarations here:
template <class T>
class Baz
{...};
Poznámky
Obě import
a module
jsou považovány za klíčová slova pouze v okamžiku, kdy se zobrazí na začátku logického řádku:
// 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 ;
Specifické pro Microsoft
V Jazyce Microsoft C++ jsou tokeny a module
vždy identifikátory import
a nikdy klíčová slova, pokud se používají jako argumenty makra.
Příklad
#define foo(...) __VA_ARGS__
foo(
import // Always an identifier, never a keyword
)
Ukončit konkrétní microsoft
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro