Possible en double:
How can I make the preprocessor insert linebreaks into the macro expansion result?Puis-je forcer le pré-processeur C à générer une nouvelle ligne?
#define IDENTIFIER { /*new line here*/\
my_multiline(); /*new line here*/\
macro(); /*new line here*/\
} /*new line here*/
Puis-je forcer le pré-processeur C pour générer une nouvelle ligne dans son extension? Je ne crois pas qu'il existe un moyen standard de le faire, mais je ne voudrais pas déranger les hacks spécifiques à la plate-forme pour Visual C++ (2008) et gcc.
Je ne suis pas intéressé par m4 ou un pré-processeur séparé.
Pourquoi je vous pose cette question:
Il est plus ou moins juste curiosité. Puisque c'est un hack je ne vais pas essayer ça en production mais j'aimerais savoir si je suis capable de le faire quand même. Il y a quelques jours, je suis tombé sur cette question:
Can you turn off (specific) compiler warnings for any header included from a specific location?
C'est une question que je voudrais moi-même solution. J'ai pensé à créer une macro pour inclure un en-tête, mais avec des pragmas corrects pour désactiver un avertissement avant d'inclure, inclure l'en-tête que je voudrais désactiver les avertissements, en activant l'avertissement après l'inclusion.
Bien sûr, je pourrais créer un script pour générer des inclusions fictives avec le pragma pour l'avertissement et l'inclusion.
Mon premier problème était que puisque #include
est une directive pré-processeur une macro serait quelque peu inutile de le générer. Mais je trouve cette réponse:
Is there a way to do a #define inside of another #define?
Avec cela, je crois que je peux générer la macro si spécial comprennent que je suis en mesure de forcer le compilateur à générer des sauts de ligne dans son expansion.
Je suis à la maison en ce moment mais je posterai mon code demain quand je serai au travail.
Votre '# define' a besoin d'un identifiant. Et à quoi serviraient les espaces blancs de toute façon? Vous ne voyez jamais le code développé. – GManNickG
@GMan: Il veut probablement juste que la macro elle-même soit plus lisible. – CookieOfFortune
Pouvez-vous expliquer pourquoi vous voulez que cela se fasse? Y a-t-il une macro particulière que vous essayez d'écrire? Peut-être qu'il y a une solution différente à votre problème. –