Бен Клеменс - Язык С в XXI веке
Название: | Язык С в XXI веке | |
Автор: | Бен Клеменс | |
Жанр: | Учебники и самоучители по компьютеру, Современные российские издания, Литература ХXI века (эпоха Глобализации экономики), C, C++, C# | |
Изадано в серии: | неизвестно | |
Издательство: | неизвестно | |
Год издания: | 2015 | |
ISBN: | 978-5-97060-101-3 | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Язык С в XXI веке"
Язык C - не просто фундамент всех современных языков программирования, он и сам - современный язык, идеальный для написания эффективных приложений передового уровня. Последние 20 лет C не стоял на месте. Сам язык и окружающая его экосистема подвергаются пересмотру. Эта книга начинается там, где другие заканчиваются. В ней рассказано, как изменилась функциональность, поддерживаемая любым компилятором, благодаря двум новым стандартам C, вышедшим со времен оригинального ANSI. Цель книги - рассмотреть то, чего нет в других учебниках по C: инструменты и окружение; библиотеки для работы со связанными списками и анализаторами XML; написание удобочитаемого кода с дружественным программным интерфейсом.
Издание предназначено для программистов, имеющих опыт работы на каком-либо языке и обладающими базовыми знаниями о С.
Читаем онлайн "Язык С в XXI веке" (ознакомительный отрывок). Главная страница.
- 1
- 2
- 3
- . . .
- последняя (6) »
Бен /(;zеменс
.&е.
O'REILLY®
Бен Клеменс
�3ЫI< С в XXI ве1 / / p r i n t f
int ma i n ( ) {
p r i n t f ( "The i n tegral o f а Norma l ( O , 1 ) d i s t r ib u t i o n "
"between - 1 . 9 6 and 1 . 9 6 i s : % g \ n " , e r f ( l . 9 6 * s q r t ( l / 2 . ) ) ) ;
Директивы # i n c lude должны быть вам знакомы. Компилятор вставляет вместо
них содержимое файлов math.h и stdio.h соответственно, а следовательно, и объ
явления функций printf, e r f и sqrt. Объявление в math.h ничего не говорит о том,
что делает функция erf, известно лишь, что она принимает параметр типа douЫe и
возвращает значение типа dоиЬ/е. Этой информации компилятору достаточно для
проверки правильности использования и создания объектного файла, в котором
оставлено сообщение компьютеру: когда дойдешь до этого места, найди функцию
erf и подставь сюда возвращаемое ей значение.
Отреагировать на это сообщение должен компоновщик, который и производит
поиск функции e r f в библиотеке, находящейся где-то на диске.
Математические функции, объявленные в заголовке math . h, живут в отдельной
библиотеке, и компоновщику необходимо сказать об этом с помощью флага -lm.
Здесь -1 означает, что необходимо прикомпоновать библиотеку, имя которой в дан-
32
•:•
Часть 1. Окружение
ном случае состоит всего из одной буквы m. Функцию printf мы получаем задаром,
потому что при вызове компилятора неявно подразумевается, что в самом конце
команды указан флаг -lc, требующий от компоновщика добавить стандартную биб
лиотеку libc. Позже мы увидим, что библиотека GLib 2.0 компонуется с помощью
флага -lglib-2 . О, библиотека GNU Scientific Library с помощью флага -lgsl и т. д.
Таким образом, если файл называется erf.c, то полная команда вызова КОl\ШИ
лятора gcc с несколькими дополнительными флагами, которые мы обсудим ниже,
В Ы ГЛЯДИТ так:
-
gcc e r f . c
-о
e r f - lm -g -Wa l l -03 - s td=gnu l l
Итак, с помощью директивы # include в тексте программы м ы попросили ком
пилятор включить математические функции, а с помощью флага - lm в командной
строке попросили компоновщик прикомпоновать математическую библиотеку.
Флаг - о задает имя выходного файла, без него мы по умолчанию получили бы
исполняемый файл с именем а . out.
Н ескол ько моих любим ых флагов
Как вы скоро увидите, я всегда указываю несколько флагов комп илятора и вам
советую поступать так же.
О -g
включить отладочные символы. Без этого флага отладчик не покажет
вам имена переменных и функций. Наличие отладочных символов не за
медляет работу программы, а то, что файл станет на килобайт больше, не
существенно, поэтому нет никаких причин не пользоваться ими. Этот флаг
понимают gcc, Clang и icc ( Intel С Compiler).
О -std=gnu l l
этот флаг понимают clang и gcc, он означает, что комнилятор
должен разрешать код, совместимый со стандартами С 1 1 и POSIX (а также
некоторые расширения GNU). На момент написания данной книги clang по
умолчанию подразумевает стандарт С99, а gcc стандарт С89. Если у вас
стоит версия gcc, clang или icc, предшествующая выходу стандарта С 1 1 , за
давайте флаг - std=gnu 99, чтобы работать на уровне С99. Стандарт POSIX
требует, чтобы в системе присутствовал компилятор с99, поэтому нс содер
жащая версии стандарта командная строка для компиляции кода, совмести
мого с С99, имеет вид:
-
-
-
с99 erf . c
-о
e r f -lm -g -Wa l l -03
В показанных ниже файлах makefile я достигаю того же эффекта, установив
переменную СС=с 99.
В зависимости о т года вып уска Мае с 9 9 может быть специально подправленной версией
gcc, а это , возможно , не то , что вам нужно . Если ваша версия с 9 9 падает при задании флага
-Wa l l или такой программы вообще нет, сделайте свою собственн у ю версию. В файл ини
циализации оболочки (скорее всего , . bashrc) добавьте псевдони м
alias c 9 9= " gcc - - s td=c 9 9 "
или
alias c99=" clang"
к а к в а м больше нравитс я .
Г/\сЗ ва 1. На страиваем среду д/\>� компиАшии
О
О
( ·- )
\ /
•:•
33
-03 - задает уровень оптимизации 3, при котором компилятор делает все
возможное для построения более быстрого кода. Если при работе с отлад
чиком оказывается, что из-за оптимизации исчезло слишком много пере
менных и стало трудно следить за тем, что происходит, то задайте флаг -00.
Ниже мы увидим стандартный способ сделать это с помощью переменной
CFLAGS. Флаг понимают gcc, Clang и icc.
W all - выводить все предупреждения компилятора. Годится для gcc, Clang
и icc. В случае icc предпочтительнее флаг -wl, который задает режим вывода
предупреждений компилятора, --">
- 1
- 2
- 3
- . . .
- последняя (6) »
Книги схожие с «Язык С в XXI веке» по жанру, серии, автору или названию:
А. Я. Архангельский - Язык SQL в Delphi 5 Жанр: Базы данных Год издания: 2000 |