Я думаю, что этот прием является умным использованием препроцессора, который не может быть эмулирован с функцией:
#define COMMENT COMMENT_SLASH(/)
#define COMMENT_SLASH(s) /##s
#if defined _DEBUG
#define DEBUG_ONLY
#else
#define DEBUG_ONLY COMMENT
#endif
Тогда можно использовать его как это:
cout <<"Hello, World!" <<endl;
DEBUG_ONLY cout <<"This is outputed only in debug mode" <<endl;
можно также определить макрос RELEASE_ONLY.
Если ваш веб-сервер и клиент поддерживают кодировку gzip, то вы можете иметь дело с несжатыми файлами на сервере, но сжимать / распаковывать их на лету веб-сервером / веб-клиентом соответственно.
например, apache mod_gzip.
В противном случае вы можете разделить ваш dmg на 3 части:
материал после того, что вы хотите для замены
Если поток gzip разделяется в этих точках, вы можете просто объединить переднюю и заднюю часть в сжатую строку, которую хотите заменить. Это позволит вам сгенерировать его на лету.
Выпустить обычный сжатый dmg, доступный только для чтения. Затем свяжите свое приложение с установщиком пакета с предполетным скриптом, который устанавливает необходимые вам переменные.