Какие символы остались для pp-токенов? - PullRequest
5 голосов
/ 28 декабря 2011

В спецификации перечислены категории токенов pp на 2.5, но содержится последняя категория

каждый символ, не являющийся пробелом, который не может быть одним из указанных выше

Мне трудно найти пример, где pp-токен, захвативший такой символ, дает действительную программу на C ++.Как объясняет 2.5, программа может содержать дикий токен " или ', но тогда поведение не определено.Есть ли пример допустимой программы?

Ответы [ 2 ]

1 голос
/ 28 декабря 2011

Вы можете преобразовать случайный токен в действительность. На самом деле; Вы уже сделали это в предыдущем вопросе !

Жетоны случайных символов также могут появляться в группе, пропущенной условной компиляцией, т.е.

#if 0
@ \ ` €
#endif

Обратите внимание, что во всех этих случаях единственным символом случайных символов является обратный слеш, поскольку UCN, такой как \u0040, не образует идентификатор, а UCN является особым случаем внутри идентификаторов, а только обратный слеш является "самым длинным последовательность символов, которые могут составлять токен предварительной обработки, причем u0040 является отдельным идентификатором.

1 голос
/ 28 декабря 2011

Я полагаю, что $ и @, например, попадают в эту категорию (при условии, что эти символы находятся в исходном наборе символов).Оба являются действительными pp-токенами, но не являются действительными токенами и будут диагностированы как синтаксическая ошибка на более позднем этапе преобразования (если они не были удалены с помощью #if, #ifdef и т.1006 * Я не знаю ни одного случая, когда такой pp-токен приводит к действительному токену.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...