Comme mentionné dans plusieurs de mes questions précédentes, je travaille via K&R et je suis actuellement dans le préprocesseur. L'une des choses les plus intéressantes - quelque chose que je n'avais jamais su auparavant lors de mes précédentes tentatives pour apprendre C - est l' ##opérateur du préprocesseur. Selon K&R:
L'opérateur de préprocesseur
##fournit un moyen de concaténer des arguments réels pendant le développement de macro. Si un paramètre dans le texte de remplacement est adjacent à a##, le paramètre est remplacé par l'argument réel, l'##espace blanc et l'espace qui l'entoure sont supprimés et le résultat est à nouveau analysé. Par exemple, la macropasteconcatène ses deux arguments:
#define paste(front, back) front ## back
paste(name, 1)crée ainsi le jetonname1.
Comment et pourquoi quelqu'un utiliserait-il cela dans le monde réel? Quels sont des exemples pratiques de son utilisation et y a-t-il des pièges à considérer?
std::wstring BuildDate = WIDEN(__DATE__) L" " WIDEN(__TIME__);et créer implicitement la chaîne entière à la fois.