<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/121605>121605</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Characters that are not valid in identifiers should be allowed as preprocessing tokens
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Halalaluyafail3
      </td>
    </tr>
</table>

<pre>
    C allows using characters (to be clear, character here means a unicode scalar value) or universal character names that are not valid at the start of an identifier as preprocessing tokens:
> The categories of preprocessing tokens are: header names, identifiers,
> preprocessing numbers, character constants, string literals, punctuators, and
> both single universal character names as well as single non-white-space
> characters that do not lexically match the other preprocessing token
> categories.

Section 6.4 "Lexical elements" Paragraph 3 ISO/IEC 9899:2024

However, Clang does not follow this specifically for characters e.g. the following is incorrectly rejected:
```c
#define STR(X)#X
#define CAT(X,Y)X##Y
int main(){
    const char*CAT(z,̈)=STR(☺);
}
```
Clang does accept this when the combining diaresis character and smiling face emoji are replaced by \u0308 and \u263A, respectively.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx8VE2P2zYQ_TX0ZbCGPPSXDjooyhoJUKBFdw-b44gaWUwpUiApu-6vL0g5XW-RFjYgcD4e3zyNHoWgz5a5ErtPYvd5RXMcnK--kEm_-UY9aSNXretuVQNkjLsGmIO2Z1ADeVKRfQCBx-igZVCGyQts3pMwsGcYmWwAgtlq5TqGoMiQhwuZmQWW4HxKXdgHMg-9lkYOEAeKQJ7BuphadAcUIQ4MIZKP4HogC7pjG3Wv2QMFmDxP3ikOmWp0f7ANQtaiqIV8hteBQVHks_OaQwL4WX26U8gaBqbuB5k02_tN6XiH_Ahg57Fd0g_TKGdDJBtzOESfCo2O7Mnk0DRbFWeKbmkk292xWxcHSLiG_0cmCnBlY9LzXmudfboOOvJTmEjxHe3hvWVlO5eFNfynVmTMDUaKasj6ujiw_5k2P6D-0XCdIkX9wipqZ2G_3oJA_GXBBDY8ch4c4TfydPY0DSDh68uvAk9fnxsoj2UpZI0FbhekL-7KF8671BiyZ-gch0y0d2kLIQ46QJhY6f7Ou3f-cThen9d5iqUhcdcBtFXOe1bR3MDzd1aRu_ti7Ivlr9IBZce9tgwvr78LPL4JLAXKtw-ppn5dUs03geWbQClQfhNFrW2EkbQVeEx9h0-iqAFg2YDMUWC9dP-VVqhpxDFXys_LdeIZRXkUn-ocTO3i8PmRoyjqB1lIKZ7iIsl1YJvHVm5stU1jd5o8Bx0eVoZsB2HUJqV7Ugw8uu86f2WeJ0OKO2hvIHbNXMjimOvTAfeyTu_Ec5I-6gub23rVVbIrZUkrrjYHuSu3xW4vV0O1KWizPW5b2u9Zktx3WB6w7ZFps-kPdFjpCgvcFZtC4maLW7mWPWNZtP1mj8e2P0ixLXgkbdbGXMa18-eVDmHmaoObfbFbGWrZhGxeiJavkLMCMXmZr1LTUzufg9gWRocY3mGijoar5l_fwkeX0Y-uEiAMbjZdsrnsg9z9l9GsZm-qIcYpWw6eBJ7OOg5zu1ZuFHhKJO6Pp8m7tIQCT5l6EHi6z3ap8O8AAAD__wpl3GM">