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