Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las declaraciones module, import y export están disponibles en C++20 y requieren el modificador del compilador /std:c++20 o uno posterior. Para obtener más información, vea Introducción a los módulos en C++.
module
Coloque una declaración module al principio de un archivo de implementación de módulo para especificar que el contenido del archivo pertenece al módulo nombrado.
module ModuleA;
export
Use una export module declaración para el archivo de interfaz principal del módulo, que tiene una extensión .ixx de forma predeterminada. Si desea usar otra extensión, use el modificador /interface para compilarlo como una interfaz de módulo.
export module ModuleA;
En un archivo de interfaz, use el modificador export en los nombres destinados a formar parte de la interfaz pública:
// ModuleA.ixx
export module ModuleA;
namespace ModuleA_NS
{
export int f();
export double d();
double internal_f(); // not exported
}
Los nombres no exportados no son visibles para el código que importa el módulo.
import ModuleA;
int main() {
ModuleA_NS::f(); // OK
ModuleA_NS::d(); // OK
ModuleA_NS::internal_f(); // Ill-formed: error C2065: 'internal_f': undeclared identifier
}
Es posible que la palabra clave export no aparezca en un archivo de implementación de módulo. Cuando export se aplica a un nombre de espacio de nombres, se exportan todos los nombres del espacio de nombres.
import
Use una declaración import para hacer que los nombres de un módulo sean visibles en el programa. La declaración import debe aparecer después de la declaración module y después de cualquier directiva #include, pero antes de cualquier declaración en el archivo.
module ModuleA;
#include "custom-lib.h"
import std;
import myModule;
// begin declarations here:
template <class T>
class Baz
{...};
Comentarios
Tanto import como module se tratan como palabras clave solo cuando aparecen al principio de una línea lógica:
// 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 ;
Específico de Microsoft
En Microsoft C++, los tokens import y module son siempre identificadores y nunca palabras clave cuando se usan como argumentos para una macro.
Ejemplo
#define foo(...) __VA_ARGS__
foo(
import // Always an identifier, never a keyword
)
Fin Específico de Microsoft
Consulte también
Introducción a los módulos en C++
Importación de la biblioteca estándar de C++ mediante módulos