Étant donné un entier constant à la compilation (un objet, pas une macro), puis-je le combiner avec un littéral de chaîne au moment de la compilation, éventuellement avec le préprocesseur?Combinaison de littéraux de chaîne et de constantes entières
Par exemple, je peux concaténer des chaînes littérales simplement en les plaçant côte à côte:
bool do_stuff(std::string s);
//...
do_stuff("This error code is ridiculously long so I am going to split it onto "
"two lines!");
Great! Mais si j'ajouter des constantes entières dans le mélange:
const unsigned int BAD_EOF = 1;
const unsigned int BAD_FORMAT = 2;
const unsigned int FILE_END = 3;
Est-il possible d'utiliser le préprocesseur pour concaténer en quelque sorte cela avec les littéraux de chaîne?
do_stuff("My error code is #" BAD_EOF "! I encountered an unexpected EOF!\n"
"This error code is ridiculously long so I am going to split it onto "
"three lines!");
Si ce n'est pas possible, est-ce que je peux mélanger des chaînes constantes avec des chaînes littérales? C'est à dire. si mes codes d'erreur étaient des chaînes, au lieu de non-signés?
Et si ce n'est pas possible, quel est le moyen le plus court et le plus propre de regrouper ce mélange de chaînes littérales et de codes d'erreur numériques?
Ah, oui. Cette double macro est importante. Quelque chose que j'ai oublié dans mon exemple. Bon spectacle. – JoshD
pourquoi la double macro? – Chubsdad
@ Chubsdad: http://codepad.org/DiAC35hl –