Array M. УЭИТ - Язык Си - руководство для начинающих

Тут можно читать онлайн Array M. УЭИТ - Язык Си - руководство для начинающих - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Мир, год 1988. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Язык Си - руководство для начинающих
  • Автор:
  • Жанр:
  • Издательство:
    Мир
  • Год:
    1988
  • Город:
    Москва
  • ISBN:
    5-03-001309-1 /русск./
  • Рейтинг:
    3/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

Array M. УЭИТ - Язык Си - руководство для начинающих краткое содержание

Язык Си - руководство для начинающих - описание и краткое содержание, автор Array M. УЭИТ, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
M. УЭИТ   С. ПРАТА    Д. МАРТИН
Язык Си — руководство для начинающих

Язык Си - руководство для начинающих - читать онлайн бесплатно полную версию (весь текст целиком)

Язык Си - руководство для начинающих - читать книгу онлайн бесплатно, автор Array M. УЭИТ
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

/* файл bool.h */

#define BOOL int;

#define TRUE 1

#define FALSE 0

Вот пример программы, использующей этот заголовок:

/* считает пустые символы */

#include

#include "bool.h"

main( )

{

int ch;

int count = 0;

BOOL whitesp( );

while((ch = getchar( )) != EOF)

if(whitesp(ch)) count++;

printf(" Имеется %d пустых символов. \n", count);

}

BOOL whitesp(c)

char c;

if(c == ' ' || с == '\n' || с == '\t')

return(TRUE);

else

return(FALSE);

}

Замечания по программе

1. Если две функции в этой программе ( 'main( )'и 'whitesp( )') следовало скомпилировать раздельно, то нужно было бы использовать директиву #include "bool.h"с каждой из них.

2. Выражение if(whitesp(ch))аналогично if(whitesp(ch)) == TRUE, так как сама функция whitesp(ch)имеет значение TRUEили FALSE.

3. Мы не создали новый тип BOOL, так как BOOLуже имеет тип int. Цель наименования функции BOOL- напомнить пользователю, что функция используется для логических вычислений (в противоположность арифметическим).

4. Использование функции в предусматриваемых логических сравнениях может сделать программу яснее. Она может также сэкономить наш труд, если сравнение встречается в программе более одного раза.

5. Мы могли бы использовать макроопределение вместо функции для задания whitesp( ).

Многие программисты разрабатывают свои стандартные заголовочные файлы, чтобы использовать их в программах. Некоторые файлы могут создаваться для специальных целей, другие можно использовать почти в каждой программе. Так как включенные файлы могут содержать директивы #include, можно, если хотите, создать сжатый, хорошо огранизованный заголовочный файл. Рассмотрим этот пример:

/*заголовочный файл mystuff.h*/

#include

#include "bool.h"

#include "funct.h"

#define YES 1

#define NO 0

Во-первых, мы хотим напомнить вам, что препроцессор языка Си распознает комментарии, помеченные /* и */, поэтому мы можем включать комментарии в эти файлы.

Во-вторых, мы включили три файла. По-видимому, третий содержит некоторые макрофункции, которые используются часто.

В-третьих, мы определили YESкак 1, тогда как в файле bool.hмы определили TRUEкак 1. Но здесь нет конфликта, и мы можем использовать слова YESи TRUEв одной и той же программе. Каждое из них будет заменяться на 1. Может возникнуть конфликт, если мы добавим в файл строку

#define TRUE 2

Второе определение вытеснило бы первое, и некоторые препроцессоры предупреждали бы вас, что TRUEпереопределено.

Директива #includeне ограничивается заголовочными файлами. Если вы записали нужную функцию в файл sort.с, то можно использовать

#include "sort.с"

чтобы скомпилировать его совместно с вашей текущей программой.

Директивы #includeи #defineявляются наиболее активно используемыми средствами препроцессора языка Си. Рассмотрим более сжато другие его директивы.

ДРУГИЕ ДИРЕКТИВЫ: #undef, #if, #ifdef, #ifndef, #else И #endif

Эти директивы обычно используются при программировании больших модулей. Они позволяют приостановить действие более ранних определений и создать файлы, каждый из которых можно компилировать по-разному.

Директива #undefотменяет самое последнее определение поименованного макроопределения.

#define BIG 3

#define HUGE 5

#undef BIG /* BIG теперь не определен */

#define HUGE 10 /* HUGE переопределен как 10 */

#undef HUGE /* HUGE снова равен 5*/

#undef HUGE /* HUGE теперь не определен */

Очевидно (мы надеемся), вы не будете компилировать файл, как в этом примере. Предположим, что у вас есть большой стандартный файл, определенный директивой #include, который вы хотели бы использовать, но для этого некоторые из его определений для одной из функций программы нужно будет временно изменить, Вместо того чтобы иметь дело с этим файлом, вы можете просто включить его, а затем окружить такую выделяющуюся функцию соответствующими директивами #defineи #undef.

Или, предположим, что вы работаете с большой системой программ. Вы хотите задать макроопределение, но не уверены, использует ли ваше определение другие определения откуда-нибудь из другого места системы. В этом случае просто отмените ваше макроопределение в том месте, где оно вам больше не нужно, а оригинал этого макроопределения, если он есть, будет по-прежнему оставаться в силе для остальной части системы.

Другие упомянутые нами директивы позволяют выполнять условную компиляцию. Вот пример:

#ifdef MAVIS

#include " horse.h" /* выполнится, если MAVIS определен */

#define STABLES 5

#else

#include "cow.h" /*выполнится, если MAVIS не определен */

#define STABLES 15

#endif

Директива #ifdefсообщает, что если последующий идентификатор ( MAVIS) определяется препроцессором, то выполняются все последующие директивы вплоть до первого появления #elseили #endif. Когда в программе есть #else, то программа от #elseдо #endifбудет выполняться, если идентификатор не определен.

Такая структура очень напоминает конструкцию if-elseязыка Си. Основная разница заключается в том, что препроцессор не распознает фигурные скобки {}, отмечающие блок, потому что он использует директивы #else(если есть) и #endif(которая должна быть) для пометки блоков директив.

Эти условные конструкции могут быть вложенными.

Директивы #ifdefи #ifможно использовать с #elseи #endifтаким же образом. Директива #ifndefопрашивает, является ли последующий идентификатор неопределенным ; эта директива противоположна #ifdef. Директива #ifбольше похожа на обычный оператор ifязыка Си. За ней следует константное выражение, которое считается истинным, если оно не равно нулю:

#if SYS == "IBM"

#include "ibm.h"

#endif

Одна из целей использования "условной компиляции" - сделать программу более мобильной. Изменяя несколько ключевых определений в начале файла, вы можете устанавливать различные значения и включать различные файлы для разных систем.

Эти краткие примеры иллюстрируют удивительную способность языка Си изощренно и строго управлять программами.

ЧТО ВЫ ДОЛЖНЫ БЫЛИ УЗНАТЬ В ЭТОЙ ГЛАВЕ

Как определять символьные константы директивой #define: #define FINGERS 10

Как включать другие файлы: #include "albanian.h"

Как определить макрофункцию: #define NEG(X) (-(X))

Когда использовать символические константы: часто.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Array M. УЭИТ читать все книги автора по порядку

Array M. УЭИТ - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Язык Си - руководство для начинающих отзывы


Отзывы читателей о книге Язык Си - руководство для начинающих, автор: Array M. УЭИТ. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x