ключевые: unsigned char, int, extern;
литералы: "Hello", 0x10, 6, 14d, 5, 'C';
идентификаторы: nn, mas, LEN, _hello, a3243;
недопустимые последовательности: 43554acbde, 0myname, 0.555.3, "Hello;
Препроцессор действует точно также, как и компилятор. Сначала разбивает код макроса на синтаксическое дерево - определяет что где на основе заданных признаков (например, если первый символ - цифра или кавычки - значит однозначно не идентификатор), затем уже проводит его семантический анализ - проверяет "смысл" - находится ли идентификатор в списке аргументов макроса, например, или нет, в зависимости от этого заменяет его при обработке макросов или не заменяет. В случае с "nn" - такая запись сразу воспринимается как литерал, и препроцессор его конечно заменить не может.
only pure true norwegian blackx 


