Est-ce que quelqu'un peut expliquer pourquoi ce qui suit ne fonctionne pas? Je pensais que le prétraitement avait été effectué dans une phase de traduction antérieure à celle des opérations littérales de chaîne et de la traduction générale des jetons.C++ Translation Phase Confusion
Ne serait-le compilateur plus ou moins voir ceci:
int main()
{
const wchar_t* const foo = L"bar";
}
Ce serait formidable si quelqu'un pouvait citer une explication de la norme.
Bien sûr! Merci. Doit avoir effectivement regardé la sortie prétraite ... – blakecl
Veillez à laisser une ligne vide entre cette définition et la ligne suivante, sinon la macro sera poursuivie. Je l'ai utilisé plusieurs fois dans le passé pour créer des macros multilignes. –
Notez que cela ne fonctionnera pas sur un préprocesseur conforme car un préprocesseur conforme est basé sur un jeton. La seule façon de combiner deux jetons en un (par exemple, un 'L' et un' 'bar'') est d'utiliser l'opérateur de concaténation ('##'), qui ne peut pas apparaître comme le dernier jeton d'une liste de remplacement. –