Прямой ответ на вопрос: не пишите код, который зависит от параметров компилятора. В этом случае вся дискуссия проистекает из того факта, что код отличается в зависимости от флагов компилятора (наиболее вероятно с помощью #ifdef
или других директив препроцессора). Это, в свою очередь, означает, что, хотя кодовая база одинакова, при изменении флагов компилятора обработанный код будет отличаться, и двоичный файл, скомпилированный с одним набором флагов, не будет совместим с двоичным файлом, скомпилированным с другим набором флагов.
В зависимости от реального проекта, может быть невозможно отделить код от флагов компилятора, и вам придется с этим жить, но я бы рекомендовал избегать как можно большего количества кода, который может быть настроен из командной строки компилятора, так же, как вы должны избегать кода DEBUG только с побочными эффектами. А когда вы не можете, document эффект, который имеют различные флаги компилятора.