| /* Test C2x UTF-8 characters. Test valid usages. */ |
| /* { dg-do compile } */ |
| /* { dg-options "-std=c2x -pedantic-errors" } */ |
| |
| unsigned char a = u8'a'; |
| _Static_assert (u8'a' == 97); |
| |
| unsigned char b = u8'\0'; |
| _Static_assert (u8'\0' == 0); |
| |
| unsigned char c = u8'\xff'; |
| _Static_assert (u8'\xff' == 255); |
| |
| unsigned char d = u8'\377'; |
| _Static_assert (u8'\377' == 255); |
| |
| _Static_assert (sizeof (u8'a') == 1); |
| _Static_assert (sizeof (u8'\0') == 1); |
| _Static_assert (sizeof (u8'\xff') == 1); |
| _Static_assert (sizeof (u8'\377') == 1); |
| |
| _Static_assert (_Generic (u8'a', unsigned char: 1, default: 2) == 1); |
| _Static_assert (_Generic (u8'\0', unsigned char: 1, default: 2) == 1); |
| _Static_assert (_Generic (u8'\xff', unsigned char: 1, default: 2) == 1); |
| _Static_assert (_Generic (u8'\377', unsigned char: 1, default: 2) == 1); |
| |
| #if u8'\0' - 1 < 0 |
| #error "UTF-8 constants not unsigned in preprocessor" |
| #endif |