Это зависит и в поставщике компилятора и в библиотеках, которые Вы компилируете с флагами ОТЛАДКИ. В то время как код ОТЛАДКИ никогда не должен влиять на рабочий код (не должен иметь никаких побочных эффектов), это иногда делает.
, В частности, переменные могут быть инициализированы только в Режиме отладки и оставлены неинициализированные в режиме RELEASE. STL в компиляторах Visual Studio отличается в режимах DEBUG и RELEASE. Идея состоит в том, что итераторы полностью проверяются в ОТЛАДКЕ для обнаружения возможных ошибок (использующий делаемые недействительным итераторы, например, итератор в вектор делается недействительным, если вставка происходит после того, как итератор получен).
то же происходит со сторонними библиотеками, первым, о котором я могу думать, является QT4, который завершит Вашу программу с утверждением, если поток, отличающийся от того, который создал графический объект, выполнит операции рисования.
Со всеми изменениями, Ваш код и объем потребляемой памяти будут отличаться в обоих режимах. Указатель (читающий положение одна передача конец массива) проблема может передать необнаруженный, если то положение читаемо.
Утверждения предназначены, чтобы уничтожить приложение во время ОТЛАДКИ и исчезнуть из Сборок конечных версий, таким образом, я не думал бы на утверждениях, как являющихся Вашей проблемой. Указатель жулика или доступ к одному прошлому конец были бы моими первыми подозреваемыми.
Некоторое время назад были проблемы с некоторой оптимизацией компилятора, повреждающей код, но я не считал жалобы в последнее время. Там могла быть проблема оптимизации, но это не будет моим первым подозреваемым.
Обновление: вы, вероятно, действительно хотите, чтобы задача копирования , а не перемещение, но преобразователь регулярных выражений работает одинаково как для копирования, так и для перемещения.
Следующее регулярное выражение скопирует все jar-файлы из каталога jars в jars_out, сопоставив [папка] / [файл] .jar с [папка] _ [файл] .jar.
<copy todir="./jars_out">
<fileset dir="jars"/>
<mapper type="regexp" from="([^/\\]*)[/\\](.*)\.jar$$" to="\1_\2.jar"/>
</copy>
Сопоставителю регулярного выражения требуется соответствующий jar-файл реализации регулярного выражения на путь к классам для работы. Доступны различные реализации:
Вы можете использовать zipfileset
с ] атрибут fullpath
для переименования имени файла в jar:
<jar destfile="newjar.jar">
<zipfileset dir="yay" includes="my.jar" fullpath="yay_my.jar"/>
<zipfileset dir="boo" includes="my.jar" fullpath="boo_my.jar"/>
<!-- etc. -->
</jar>
Вы не можете использовать преобразователь с этой техникой, вам придется явно перечислить каждый файл jar. Если вы можете предположить, что каждый файл называется my.jar
, и все они находятся в непосредственном дочернем каталоге, вы можете использовать субант цель
, чтобы объединить их все:
<target name="glom">
<subant genericantfile="${ant.file}" target="update-jar">
<dirset dir="." includes="*"/>
</subant>
</target>
<target name="update-jar">
<basename file="${basedir}" property="dirname"/>
<property name="path" value="${dirname}_my.jar"/>
<jar destfile="../newjar.jar" update="yes">
<zipfileset dir="." includes="my.jar" fullpath="${path}"/>
</jar>
</target>