Следующий макрос препроцессора:
#define _VARIANT_BOOL /##/
на самом деле недопустим C ;грубо говоря, причина в том, что препроцессор определен как работающий с потоком токенов, тогда как вышеизложенное предполагает, что он работает с потоком символов.
С другой стороны, к сожалению, вышеупомянутое действительно происходит вЗаголовочный файл Microsoft, так что я все равно должен с ним справиться.(Я работаю над реализацией препроцессора.)
В каких других случаях люди встречались в дикой природе, будь то устаревший код, какой бы старый он ни был, пока этот код еще используется, макросов препроцессора, которыена самом деле не действителен, но работает в любом случае, потому что они написаны в компиляторах, использующих символьно-ориентированную реализацию препроцессора?
(Обоснование: я пытаюсь заранее понять, сколько особых случаев у меня будетвзломать, если я напишу правильную чистую, соответствующую стандарту токен-ориентированную реализацию.)