Прежде всего, определение глобального значения const
позволяет компилятору использовать только значение (в качестве значения r, поскольку вы обычно не ссылаетесь на адрес MATH_PI
) и использовать значение в каждом месте, где ономожет быть необходимо.Если вы хотите, чтобы константа была размещена на фиксированном сайте, лучший способ указать это на ассемблере.
Когда я был молодым, я использовал команду Unix whatis
, чтобы увидеть префикс #(@)
строка, в которой обычно хранится информация о версии в системе ревизий SCCS.Когда мне пришлось переключиться на cvs, я использовал эту идею для определения констант в каждом исходном файле и поиска (это легко сделать с помощью grep(1)
или некоторой программы-фильтра) для сканирования двоичного файла (да, двоичного кода программы) для строк, которые начинались в $Id:
, поэтому я встраивал такие строки, как:
static const char CVS_id[] = "\n$Id$\n";
в исходные файлы, и когда grep(1)
пропинговал двоичный файл, я получал полную ревизию для каждого модуля, связанного в исполняемом файле.
Git не помещает строку версии сама по себе, но лучшее (потому что ему не нужно помещать вещи в абсолютные адреса) - это поместить информацию о версии в строку с определенным шаблоном (git позволяетпоставить его для себя с помощью git hook ), чтобы его не перепутал со сканером код.Таким образом, вы можете получать информацию о версии каждого включенного исходного файла, просто сканируя двоичные файлы.
Все это не требует, чтобы вы фиксировали вещи в фиксированных местах, поэтому, с моей точки зрения, обеспечивает большую гибкостьк вашей карте памяти и дает вам более удобный способ ведения дел.