#define PER_MILLE_SIGN "\u2030"
#define CODEPOINT_(x) * U ## x // Prepend char32_t prefix, get first element of string literal.
#define CODEPOINT(x) CODEPOINT_(x) // Tame catenation operator.
wchar_t *s1 = L"" PER_MILLE_SIGN;
char *s2 = "123 " PER_MILLE_SIGN;
constexpr char16_t c{ CODEPOINT( PER_MILLE_SIGN ) }; // Narrowing safe; CODEPOINT is constant expression.
#include <iostream>
int main() {
switch ( 0x2030 ) {
case c: std::cout << s2 << '\n';
}
}
I2RlZmluZSBQRVJfTUlMTEVfU0lHTiAiXHUyMDMwIgoKI2RlZmluZSBDT0RFUE9JTlRfKHgpICogVSAjIyB4IC8vIFByZXBlbmQgY2hhcjMyX3QgcHJlZml4LCBnZXQgZmlyc3QgZWxlbWVudCBvZiBzdHJpbmcgbGl0ZXJhbC4KI2RlZmluZSBDT0RFUE9JTlQoeCkgQ09ERVBPSU5UXyh4KSAvLyBUYW1lIGNhdGVuYXRpb24gb3BlcmF0b3IuCgp3Y2hhcl90ICpzMSA9IEwiIiBQRVJfTUlMTEVfU0lHTjsKY2hhciAqczIgPSAiMTIzICIgUEVSX01JTExFX1NJR047CmNvbnN0ZXhwciBjaGFyMTZfdCBjeyBDT0RFUE9JTlQoIFBFUl9NSUxMRV9TSUdOICkgfTsgLy8gTmFycm93aW5nIHNhZmU7IENPREVQT0lOVCBpcyBjb25zdGFudCBleHByZXNzaW9uLgoKI2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IG1haW4oKSB7Cglzd2l0Y2ggKCAweDIwMzAgKSB7CgkJY2FzZSBjOiBzdGQ6OmNvdXQgPDwgczIgPDwgJ1xuJzsKCX0KfQo=