Y a-t-il un moyen d'obtenir le pré-processeur C ++ pour développer une valeur de définition d'un # dans une chaîne littéral?
Par exemple:
#define NEW_LINE '\n' Printf("OutputNEW_LINE"); //or whatever
5 Réponses :
Si je me souviens bien, il est
Donc, cela sera élargi à la limite de la construction et non via une installation de formatage de Printf?
Oui, le compilateur C concaténera automatiquement les littéraux de chaînes adjacents, bien que le #define puisse définir New_line comme "\ n" et non "\ n" pour que cela fonctionne, je pense.
+1 pour contrecarrer le bowvote injustifié. (Ce n'était pas mon bowvote, mais c'était peut-être parce que le code ne fonctionnera pas avec #define New_line '\ n' (avec des guillemets simples), comme indiqué dans la question de Adam. Dur mais une possibilité.)
Cela le fera:
#define NEW_LINE "\n" // Note double quotes Printf("Output" NEW_LINE);
Vous pouvez faire ce qui suit.
#define NEW_LINE "\n" printf("Output" NEW_LINE);
Bien ....
printf("Output%s", NEW_LINE);
Exactement, mais beaucoup plus facile à maintenir à long terme :)
mmmm ... pas vraiment, vous devrez toujours tout recompiler si les changements #define et la virgule manquante ne devraient pas avoir aucune cause de problème si quelque chose dans le texte change, comme vous pouvez toujours ajouter des espaces réservés et des variables sans casser quelque chose. Au moins à mon avis.
#define NEW_LINE "\n" printf("Output" NEW_LINE); //or whatever should do the trick.
@Gman toutes les alternatives «moins laides»?
Eh bien, vous pouvez simplement utiliser \ n directement dans les chaînes. La norme C charge que ce caractère unique sera étendu à la plate-forme utilisée comme délimiteur / terminateur de ligne, au moins lors de la rédaction de fichiers texte et de la console.