• [^] # 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é à 5. Dernière modification le 02 décembre 2016 à 11:47.

    surtout que "__" est sensé être reservé à unsage du compilo ou de l'utilisateur, bref le standard "promettait" de ne pas y toucher, si j'ai bien suivi :

    http://www.doc.ic.ac.uk/lab/cplus/c++.rules/chap5.html
    "The use of two underscores (`__') in identifiers is reserved for the compiler's internal use according to the ANSI-C standard. "

    A priori c'est ça dans la spec (que je n'ai pas) :

    17.4.3.1.2 Global names [lib.global.names]
    Certain sets of names and function signatures are always reserved to the implementation:
     Each name that contains a double underscore (_ _) or begins with an underscore followed by an uppercase letter (2.11) is reserved to the implementation for any use.
     Each name that begins with an underscore is reserved to the implementation for use as a name in the global namespace.165
    165) Such names are also reserved in namespace ::std (17.4.3.1).
    

    Bref, c'est étonnant en effet...

    toutefois, ta comparaison n'est pas bonne :

    Ce n'est pas "#__has_include" mais "#if __has_include", donc ça n'a pas grand chose à voir avec les '#'
    (__has_include est une macro)