Comme mentionné dans plusieurs de mes questions précédentes, je travaille par le biais de K&R, et je suis actuellement dans le préprocesseur. L'une des choses les plus intéressantes -- quelque chose que je ne connaissait pas avant de toutes de mes tentatives antérieures d'apprendre le C -- est l' ##
préprocesseur de l'opérateur. Selon K&R:
Le préprocesseur opérateur
##
fournit un moyen pour concaténer réel arguments au cours de macro d'extension. Si un paramètre dans le texte de remplacement est adjacent à un##
, le paramètre est remplacé par l'argument réel, de la##
et blanc autour de l'espace sont supprimé, et le résultat est à nouveau analysés. Par exemple, la macropaste
concatène ses deux arguments:
#define paste(front, back) front ## back
donc,
paste(name, 1)
crée le jetonname1
.
Comment et pourquoi quelqu'un de l'utiliser dans le monde réel? Ce sont des exemples concrets de son utilisation, et il y a des pièges à considérer?
Mise à JOUR:
J'ai accepté Brian R. Bondy réponse, mais tiens à remercier tous ceux qui ont contribué -- et nous espérons pouvoir contribuer davantage à l'avenir. Tout ici a été instructif, et m'a aidé à comprendre ce concept un peu mieux. Je doute que je vais l'utiliser n'importe quand bientôt, mais rien que de savoir non seulement ce qu'il fait, mais qu'elle est utilisée, et largement, apparemment -- est énormément utile.
Merci à tous!