It doesn't matter what u8was defined as a macro. A string literal, regardless of whether it has an encoding prefix, is the only preprocessor token. The prefix u8will not be macro-shot. Appendix C has an example demonstrating this:
#define u8 "abc"
const char *s = u8"def";
source
share