У меня есть собственная программа C ++, которая использует «очереди событий» для выполнения функций в разных потоках. Я выделяю класс «события» в куче и помещаю его в одну из очередей моих потоков для выполнения.
Все это прекрасно работает, но очень трудно отследить происхождение этих "событий". Я хотел бы, чтобы каждое «событие» хранило некоторую информацию, относящуюся к тому, откуда оно пришло. Прямо сейчас я использую встроенный _ReturnAddress()
для этого, но я также хотел бы иметь строку имени файла и номер строки. Я хорошо использую макросы для планирования моих "событий".
Конечно, я не хочу платить за эти строки.
Есть ли способ создать препроцессор и создать дамп для создания карты
"id" => "file, line", где "id" будет каким-то уникальным числом, увеличенным каждый раз, когда мой макрос будет раскрыт? Я мог бы сохранить этот идентификатор как мой источник.
Или, может быть, вычислить очень короткий хэш имени файла, чтобы я мог использовать его во время выполнения?
Любые идеи приветствуются.