Как я могу гарантировать, что все объектные файлы в моем проекте C ++ были скомпилированы с одинаковыми условными определениями? То есть в противном случае я хочу убедиться в том, что компоновщик указывает на конфликтующее определение. Я хочу, чтобы это происходило даже с агрессивным устранением мертвого кода компилятором. Есть ли известная техника для этого?
Вы не можете; индивидуальные вызовы компилятора просто независимы. Единственный способ обеспечить этот результат — иметь единый общий источник всех определений, например, указывается ли это в командной строке в вашем make-файле или в файле общего заголовка.
Других решений пока нет …