Spec wymienia rodzaje tokenów pp na 2,5, ale zawiera ostatnią kategorięJakie znaki są pozostawione dla tokenów pp?
każda postać non-white-space, że nie może być jednym z powyższym
mam trudności ze znalezieniem przykład, w którym pp token przechwytujący taki znak daje prawidłowy program C++. Jak wyjaśnia 2.5, program może zawierać dziki token "
lub '
, ale zachowanie jest niezdefiniowane. Czy istnieje przykład prawidłowego programu?
Hm jednak tylko znak \ tych zabłąkanych tokenów pasuje do ostatniej kategorii znaczników pp, ponieważ jest to jedyny znak w tym wierszu, który znajduje się w podstawowym zestawie znaków źródłowych. Pozostałe staną się UCN (identyfikatory), czy coś mi brakuje? Akceptuję to z powodu pomysłu '#if 0' i pomysłu stringize/concatenate. Dzięki! –
Tylko niektóre UCN mogą tworzyć identyfikatory (§E). Z technicznego punktu widzenia uważam, że trzy rozszerzone znaki tworzą bezpańskie ukośniki odwrotne, a następnie alfanumeryczną sekwencję, która staje się identyfikatorem. Wynika to z jawnej maksymalnej reguły muncha. (Faktycznie, które zakłada, że znaki diakrytyczne * * nie może być catenated, bo tylko wiodącym backslash jest postrzegana przez ## operatora ''!) – Potatoswatter
„może” lub „może”? Jeśli jest to „może”, to zgodnie z dyrektywami IEC, nieważne sekwencja znaków musi być nadal lexed jako identyfikator i odrzucone jako nieprawidłowe później. –