es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Soporte de módulos C++20 de Apple Clang 13 faltante.

Según la documentación oficial, Clang 13 soporta los módulos de C++20 a través del parámetro de línea de comando -fmodules.

No puedo compilar ni siquiera un módulo básico con Clang 13 (macOS Monterey) en un Mac basado en Intel o M1.

Suponiendo el siguiente contenido de texto del archivo module.cpp:

export module a;

export int f(int a, int b) {
    return a + b;
}

Ejecutando lo siguiente:

$ clang++ --version
versión de Apple clang 13.0.0 (clang-1300.0.29.3)
Objetivo: x86_64-apple-darwin21.1.0

$ clang++ -std=c++20 -stdlib=libc++ -fmodules -fbuiltin-module-map -c module.cpp 
module.cpp:1:8: error: se esperaba una plantilla
export module a;
       ^
module.cpp:1:8: error: nombre de tipo desconocido 'module'
module.cpp:3:8: error: se esperaba una plantilla
export int f(int a, int b) {
       ^
3 errores generados.

Probado con resultados idénticos en un chip ARM M1:

$ clang++ --version
versión de Apple clang 13.0.0 (clang-1300.0.29.3)
Objetivo: arm64-apple-darwin21.1.0

¿Hay alguna otra forma de hacer funcionar los módulos O hay alguna limitación no documentada de los módulos de C++20 con Apple Clang 13?

Nota: compilar con la bandera experimental -fmodules-ts funciona.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Problemas con Clang 13 y Módulos C++20 en Apple M1

    Según la documentación oficial, Clang 13 debería admitir los Módulos C++20 con el uso del parámetro de línea de comandos ” -fmodules “. Sin embargo, parece haber un problema al intentar compilar un módulo básico con Clang 13 en Macs basados en Intel y M1 que ejecutan macOS Monterey.

    Incluso al usar los parámetros de línea de comandos correctos, la compilación falla con errores como “nombre de tipo desconocido ‘módulo'” y “se esperaba una plantilla”.

    Una posible solución alternativa es usar la bandera “-fmodules-ts” experimental en lugar de “-fmodules”. Sin embargo, esta no es una solución ideal y puede que no funcione en todos los casos.

    No está claro si existen limitaciones no documentadas en los Módulos C++20 con Apple Clang 13. Es posible que se necesite una investigación más detallada para determinar la causa raíz del problema y encontrar una solución viable.

Comments are closed.