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

    <tr>
        <th>Summary</th>
        <td>
            C: any non-white space character may be a preprocessor token
        </td>
    </tr>

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

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

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

<pre>
    The C standard states in 6.4 p1

> preprocessing-token:
>                                   ...
>                                   each non-white-space character that cannot be one of the above

That is, during preprocessing all characters have to be accepted, regardless if they are valid or not in later compilation phases. But clang in all versions that I tested does not accept the following code

```{.C}
#define stringify(...) #__VA_ARGS__
char A[] = stringify(¬);
```

Here the offending not sign does not survive preprocessing, but is integrated into a string literal, which is fine.

Gcc happily accepts this and produces a string with this character.

Thanks
Jens

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUU0-P-jYQ_TTOZUQU7E0ChxxYtvzaHtufekUTexK7a-zIdoL49pUDKuxeqiKUjDL_3puZhzGa0RF1rH5n9UeBc9I-dOMcE6lU9F7dup-a4AgxoVMYVDYSRTAOmvINpi2rPlh1eDzFLzAFmoKXFKNx4yb5T3JMvPj_-1eW5f8JJ5QanHebqzaJNnFCSSA1BpSJAiSNCSQ65xP0BN4R-AGSJsDeL_QK_2cONZHxI6g5GDd-JQNo7bNwBI0LQfK5KkpJUyKVUwONGJSlGMGsjW6AgWBBaxT4ABmIcWAxo5P-MhmLyXgHk8ZIsYT3OYG06MYclnsuFKLxLt65_AaJ8npAeYprtXv3ldPgrfXXDFZ69YUca6rHv30vj6z9eHzmQtFgHEFMmbIZbozv8gr4HhgX5_Nfh_Phjx9_ns_3hDwAONzvBZj4-JLHjpwdjozvmXj_3vYFy68UaIXrh4GcynAzj3yLT1ZxDotZ6OsO8oD7OW8JjEs0BsyTMC55wAcSsCZRQJtDr9pInYMzw_IVwg8pQeM0GXt7zC-P10RAp2AKXs2S4rPm1SR99_97AOW303Gf8W7_Tu5hFaoTai_2WFC3bXm13ddVvSt0h6LBnZB1KxqkphJ8GOqt2jd8V2O_46owHa_4W9VW9bauW9GWPdYc-6Zt9lxIbDh7q-iCxpbWLpfSh7EwMc7U7dudaAqLPdm4qppzR1dYnYzzLPLQ5ZxNP4-RvVXWxBSfVZJJlrojEwdAd3vqCr7r6oK39fJf9uMDrHov5mA7ndIUs_L5ifHTaJKe-1L6C-On3Ozx2kzB_00yMX5aIUbGT3cKS8f_CQAA__8xNXKr">