• [^] # Re: Double underscore

    Posté par (site web personnel) . En réponse à la dépêche C++17 indique la disponibilité des en‐têtes (header). Évalué à 4. Dernière modification le 02 décembre 2016 à 11:53.

    (Oups, je n'avais pas vu que Zenitram avait déjà répondu pendant que je rédigeais cette réponse)

    __has_include ne s'utilise pas avec un croisillon (carré) comme #__has_include mais s'utilise comme toutes les macros du préprocesseur définies avec #define. Par exemple :

    #ifdef __has_include
    # define DISPO_ENTETE_IOSTREAM __has_include(<iostream>)
    #endif
    #if __has_include(<stdio.h>)
    # include <stdio.h>
    #endif

    Le préfixe avec le double tiret bas (underscore) permet d'indiquer que c'est un identifiant réservé (ne pas utiliser d'identifiant dans votre code source qui pourrait contenir deux tirets bas successifs __ quelque soit sa position, au début, au milieu ou à la fin).

    __has_include n'est pas un mot-clé du C++, mais une extension du compilateur qui est en cours de standardisation pour C++17.

    Commentaire sous licence Creative Commons Zero CC0 1.0 Universal (Public Domain Dedication)