2015-12-05 6 views
0

Во время предварительной обработки мы обычно сканировать все macros, но я запутался немного, что делает препроцессор также генерирует маркеры, которые фактически принятые лексическим анализатором и дополнительно сканирует входной файл,Являются ли токены подсчитаны после предварительной обработки или только в процессе предварительной обработки?

Я прошел через это , и упоминается, что токены предварительной обработки делятся на пять широких классов: идентификаторы, номера предварительной обработки, строковые литералы, пунктуаторы и т. Д., Так же как и токены, созданные во время предварительной обработки или нет?

+0

Если этот вопрос касается препроцессора C, вы можете пометить его как таковой; C - не единственный язык с препроцессором. –

ответ

0

Результат предварительной обработки - это поток токенов.

Большинство токенов создаются до фазы макрообмена, но при макрорасширении можно создавать новые маркеры с использованием операторов stringify() и токена-конкатената (##).

После предварительной обработки много токенов необходимо переанализировать, и возможно, что некоторые токены предварительной обработки не могут быть повторно проанализированы как действительные токены. Например, 2.3G является токеном для предварительной обработки, но он не соответствует ни одному действительному числовому токену. Это вызовет сообщение об ошибке.

Смежные вопросы