Я согласен с Kerrek SB.
Я сделал это один раз. Я создавал отличную, широко используемую библиотеку сжатия, которую нужно было разделить отдельно для 8-битных изображений и 12-битных изображений. Самый чистый способ, который я мог придумать, чтобы вписаться в систему сборки, был (слишком упрощает), чтобы иметь два основных файла .cpp, один из которых устанавливает #defines для 8-битной сборки, а другой для 12-битной сборки. Мастер-файлы .cpp затем #include исходные файлы библиотеки сжатия.
Это нормально не следовать общему правилу, если вы достаточно хорошо понимаете правило, чтобы знать причины этого и почему это может не применяться в вашем случае. (Но эти случаи должны быть редкими.)
Это так же безопасно, как и вы. Как правило, это не обязательно. Программирование - это не слепое следование за некоторым грузовым самолетом, а скорее * понимание * того, что вы делаете, и принятие решений на основе понимания и рассуждений. –
Единственная действительная причина, которую я когда-либо видел для этого, - это сохранить время ссылки. [Unity Build объясняется здесь] (http://stackoverflow.com/questions/543697/include-all-cpp-files-into-a-single-compilation-unit). –
@sysop: Как я уже сказал: ** понять **, что вы делаете, и сначала спросить. Включенные обрабатываются препроцессором *, задолго до того, как произойдет компиляция. Поймите препроцессор, и вы узнаете, когда все в порядке, чтобы включить вещи. –