• [^] # Re: Quel est l'intérêt ?

    Posté par (site web personnel) . En réponse au journal C++ vin va vous faire tourner en barrique !. Évalué à 9.

    Le problème des headers est qu'ils sont interprétés des tonnes de fois. Même avec des gardes, c'est lu et relu pour chaque unité de compilation les utilisant. Sur des gros projets ou de grosses dépendances ça se sent.

    De plus le résultat de l'interprétation peut varier d'une unité de compilation à l'autre selon les paramètres du préprocesseur.

    // header.hpp
    #pragma once
    #ifdef FOO
     using bar = int;
    #else
     using bar = char;
    #endif
    // 1.cpp
    #include "header.hpp"
    static_assert(std::is_same_v<bar, char>)
    // 2.cpp
    #define FOO // ou -DFOO sur la ligne de commande
    #include "header.hpp"
    static_assert(std::is_same_v<bar, char>)
    // Perdu, bar est int.

    Les modules sont une réponse à ces problèmes.