Из ISO14882: 2011 (e) 5.6-4:
Двоичный / оператор дает частное, а двоичный оператор% дает остаток от деления первого выражения на второй , Если второй операнд / или% равен нулю, поведение не определено. Для интегральных операндов оператор / дает алгебраическое отношение с любой дробной частью, отброшенной; если фактор a / b является представимым в типе результата, (a / b) * b + a% b равно a.
blockquote>Остальное - базовая математика:
(-7/3) => -2 -2 * 3 => -6 so a%b => -1 (7/-3) => -2 -2 * -3 => 6 so a%b => 1
Обратите внимание, что
Если оба операнда неотрицательны, то остаток неотрицателен; если нет, знак остатка определяется реализацией.
blockquote>из ISO14882: 2003 (e) больше не присутствует в ISO14882: 2011 (e)
В то время как острота, прием ключевого слова пересмотра только обновляет файл, когда это изменяется в том пересмотре - если Вы не измените файл, тогда это продолжит отражать старый пересмотр.
, Если Вы хотите, чтобы программное обеспечение всегда отразило полное число пересмотра, тогда необходимо будет копаться в соответствующий файл записей SVN и извлечь его, который не является слишком трудным (это - XML-файл).
Википедия делает это на их страница версии для указания на пересмотр программного обеспечения, которое это запускает живой; код здесь - ищут getSvnRevision () метод.
Можно также использовать SubWCRev, который является частью TortoiseSVN.
SubWCRev является программой консоли Windows, которая может использоваться, чтобы считать состояние Подрывной деятельности, работающей копия и дополнительно выполнить замену ключевого слова в шаблонном файле. Это часто используется в качестве части процесса сборки как средство слияния рабочей информации о копии в объект, который Вы создаете. Обычно это могло бы использоваться для включения числа пересмотра в поле “About”.
http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-subwcrev.html
Два пути:
Встраивают $Id$ или $Revision$ в коде. Тогда набор svn:keywords = "идентификационный Пересмотр" свойство на файле. Это даст Вам последний измененный пересмотр того исходного файла. Хороший для меньших проектов и сценариев.
, С другой стороны, используют Make-файл управляемый процесс и инструмент командной строки svnversion. (Конкретный язык - это должно работать на C/C++)
echo -n "#define VERSION 1.0.1-" > version.h
svnversion -n . >> version.h
Или некоторый более сложный сценарий сборки с sed и version.h.in. Тогда всего #include version.h
, Который даст Вам номер версии репозитория, который изменится с каждой фиксацией / обновление, и, вероятно, более соответствующий номер версии для большинства проектов.
Примечание: Я также использовал человекочитаемую строку версии, которую я вручную обновляю. Пример дал бы: Версия: 1.0.1-r13445
~J
Можно использовать svn:keywords
свойство для включения Rev
ключевое слово.
можно тогда использовать $Rev$
в коде, и SVN развернет его автоматически при обновлении к $Rev: 256 $
, который может тогда проанализировать...