Библиотека knigago >> Компьютеры: Языки и системы программирования >> C, C++, C# >> Язык С в XXI веке


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 1253, книга: Остроумие мира
автор: Владислав Владимирович Артемов

Вау, ребята! Книга "Остроумие Мира" Владислава Артемова - это просто бомба! Она забита до отказа умными мыслями, остротами и мудрыми изречениями. Если вы хотите побаловать свой мозг чем-то сочным и заставить себя задуматься, то эта книга для вас. Особенно круто, что Артемов собрал цитаты со всего мира, от античности до наших дней. Так что вы не только расширите свой кругозор, но и посмеетесь от души над некоторыми из этих острот. Не тратьте время на всякую ерунду - бегите за этой...

Бен Клеменс - Язык С в XXI веке

Язык С в XXI веке
Книга - Язык С в XXI веке.  Бен Клеменс  - прочитать полностью в библиотеке КнигаГо
Название:
Язык С в XXI веке
Бен Клеменс

Жанр:

Учебники и самоучители по компьютеру, Современные российские издания, Литература ХXI века (эпоха Глобализации экономики), C, C++, C#

Изадано в серии:

неизвестно

Издательство:

неизвестно

Год издания:

ISBN:

978-5-97060-101-3

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Язык С в XXI веке"

Язык C - не просто фундамент всех современных языков программирования, он и сам - современный язык, идеальный для написания эффективных приложений передового уровня. Последние 20 лет C не стоял на месте. Сам язык и окружающая его экосистема подвергаются пересмотру. Эта книга начинается там, где другие заканчиваются. В ней рассказано, как изменилась функциональность, поддерживаемая любым компилятором, благодаря двум новым стандартам C, вышедшим со времен оригинального ANSI. Цель книги - рассмотреть то, чего нет в других учебниках по C: инструменты и окружение; библиотеки для работы со связанными списками и анализаторами XML; написание удобочитаемого кода с дружественным программным интерфейсом.
Издание предназначено для программистов, имеющих опыт работы на каком-либо языке и обладающими базовыми знаниями о С.


Читаем онлайн "Язык С в XXI веке" (ознакомительный отрывок). Главная страница.

ЗЬI

Бен /(;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, который задает режим вывода
предупреждений компилятора, --">

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


Ваш e-mail является приватным и не будет опубликован в комментарии.