Knigi-for.me

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

Тут можно читать бесплатно Основы программирования в Linux - Мэтью Нейл. Жанр: Интернет издательство , год . Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте knigi-for.me (knigi for me) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.

done

$

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

#include <stdlib.h>

#include <stdio.h>

/*

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

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

 Filename: $RCSfile$

*/

static char *RCSinfo = "$Id$";

int main() {

 printf ("Hello World\n");

 printf("This is an extra line added later\n");

 printf("This file is under RCS control. Its ID is\n%s\n", 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 World\n&quot;);

 printf(&quot;This is an extra line added later\n&quot;);

 printf(&quot;This file is under RCS control. Its ID is\n%s\n&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) можно применять как часть средства отслеживания в проекте проблем, о которых сообщается, и способов их устранения. Если вы продаете программное обеспечение или даже отдаете его бесплатно, очень важно знать, что изменилось между двумя выпущенными версиями.


Мэтью Нейл читать все книги автора по порядку

Мэтью Нейл - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-for.me.

Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту knigi.for.me@yandex.ru или заполнить форму обратной связи.