Читать интересную книгу Основы программирования в Linux - Мэтью Нейл

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 168 169 170 171 172 173 174 175 176 ... 324

done

$

Отредактируйте файл в соответствии с приведенным далее кодом:

#include <stdlib.h>

#include <stdio.h>

/*

 Это важный файл для управления данным проектом.

 В нем реализована каноническая программа "Hello World".

 Filename: $RCSfile$

*/

static char *RCSinfo = "$Id$";

int main() {

 printf ("Hello Worldn");

 printf("This is an extra line added latern");

 printf("This file is under RCS control. Its ID isn%sn", RCSinfo);

 exit(EXIT_SUCCESS);

}

Теперь сохраните эту версию и посмотрите, как RCS управляет специальными строками:

$ <b>ci important.с</b>

important.с,v &lt;-- important.c

new revision: 1.3;

previous revision: 1.2

enter log message, terminated with single '.' or end of file:

&gt;&gt; <b>Added $RCSfile$ and $Id$ strings</b>

&gt;&gt; <b>.</b>

done

$

Если заглянете в каталог, то найдете только RCS-файл.

$ <b>ls -l</b>

-r--r--r-- 1 neil users 907 2007-07-09 08:07 important.с,v

$

Если вы извлечете текущую версию исходного файла (с помощью команды со) и просмотрите его, то увидите, что макросы раскрыты:

#include &lt;stdlib.h&gt;

#include &lt;stdio.h&gt;

/*

 Это важный файл для управления данным проектом.

 В нем реализована каноническая программа &quot;Hello World&quot;.

 Filename: $RCSfile: important.с,v $

<i>*/</i>

static char *RCSinfo = &quot;$Id: important.c,v 1.3 2007/07/09. 07:07:08 neil Exp $&quot;;

int main() {

 printf(&quot;Hello Worldn&quot;);

 printf(&quot;This is an extra line added latern&quot;);

 printf(&quot;This file is under RCS control. Its ID isn%sn&quot;, RCSinfo);

 exit(EXIT_SUCCESS);

}

А теперь выполните упражнение 9.6.

Упражнение 9.6. GNU-версия make с RCS

У команды make версии GNU есть несколько встроенных правил для управления RCS-файлами. В этом примере вы увидите, как работать с отсутствующим исходным файлом.

$ <b>rm -f important.с</b>

$ <b>make important</b>

со important.с,v important.c

important.с,v --&gt; important.c

revision 1.3

done

сс -c important.c -o important.о сс important.о -о important

rm important.о important.с

$

Как это работает

У команды make есть стандартное правило для создания файла без расширения с помощью компиляции файла с тем же именем и расширением с. Второе стандартное правило разрешает make создать файл important.c из файла important.c,v, используя RCS. Поскольку нет файла с именем important.c, команда make создала файл с расширением с, получив последнюю версию файла с помощью команды со. После компиляции она навела порядок, удалив файл important.c.

Команда ident

Команду ident можно применять для поиска версии файла, которая содержит строку $Id$. Поскольку вы сохранили строку в переменной, она появляется и в результирующем исполняемом файле. Может оказаться так, что, если вы включили специальные строки в исходный код, но никогда не обращаетесь к ним, компилятор из соображений оптимизации удалит их. Эту проблему можно обойти, добавив в исходный код несколько фиктивных обращений к ним, хотя по мере улучшения компиляторов делать это становится все труднее!

Далее показан простой пример того, как можно использовать команду ident для двойной проверки RCS-версии исходного файла, применяемого для формирования исполняемого файла (упражнение 9.7).

Упражнение 9.7. Команда ident

$ <b>./important</b>

Hello World

This is an extra line added later

This file is under RCS control. Its ID is

$Id: important.c,v 1.3 2007/07/09 07:07:08 neil Exp $

$ <b>ident important</b>

important:

$Id: important.c,v 1.3 2007/07/09 07 :07 :08 neil Exp $

$

Как это работает

Выполняя программу, вы показываете строку, включенную в исполняемый файл. Далее вы демонстрируете, как команда ident может извлечь из исполняемого файла строки вида $Id$.

Этот метод применения RCS и строк вида $Id$, включаемых в исполняемые файлы, может быть очень мощным средством определения версии файла, содержащей ошибку, о которой сообщил пользователь. RCS-файлы (или SCCS) можно применять как часть средства отслеживания в проекте проблем, о которых сообщается, и способов их устранения. Если вы продаете программное обеспечение или даже отдаете его бесплатно, очень важно знать, что изменилось между двумя выпущенными версиями.

1 ... 168 169 170 171 172 173 174 175 176 ... 324
На этом сайте Вы можете читать книги онлайн бесплатно русская версия Основы программирования в Linux - Мэтью Нейл.

Оставить комментарий