Есть необходимость пронумеровать все исключительные ситуации (ошибки) в C-программе (константы). Чтоб вот для такой-то версии такой-то номер ошибки -- и сразу можно сказать что именно это есть.
Самый простой вариант: пронумеровать как есть. Опасен возможностью дублирования номеров. Неприемлемо.
Использование макропроцессора: каждой ситуации присваивается символическое имя. Дубли ищутся grep'ом. Это плохое решение, но это решение. А список большой получается, что неудобно.
Хотелось бы автоматической нумерации и автоматического же выявления дублей. Хотелось бы из исходника извлекать, при необходимости, список этих номеров с расшифровкой каждого. Именно из исходника, потому как поддерживать его отдельно -- ну понятно...
Я понимаю, что m4 решает любые задачи программирования... Но не хотелось бы с ним связыватся. Хотелось бы остаться в рамках стандартного C-препроцессора. Который, я не вижу как его здесь можно применить. Я вижу, что его принципиально невозможно применить для того, для чего я хочу. Но может просто я не вижу какого-то достаточно простого решения?