C non ha un operatore di concatenazione di stringhe specifico ( +
) come C # e Java. In C # o Java, quando il compilatore vede
"a" + "b"
può compilare il codice esattamente come se
"ab"
sono stati scritti nel codice sorgente. In C, tuttavia, non esiste una sintassi altrettanto semplice per descrivere la concatenazione di stringhe che il compilatore può riconoscere e precalcolare. Così i progettisti di C decenni fa hanno scelto questo
"a" "b"
significherebbe esattamente la stessa cosa di
"ab"
Naturalmente C ++ ha ereditato la stessa convenzione. Mentre la libreria standard di C ++ sovraccarica +
su std::string
per significare concatenazione di stringhe, il compilatore non tenta di coalesce "a" + "b"
perché questo è in realtà un errore (non è possibile aggiungere due puntatori const char *
insieme).