Разработка приложений в среде Linux - [18]
>-ansi | Поддержка в программах на языке С всех стандартов ANSI (X3.159-1989) или их эквивалента ISO (ISO/IEC 9899:1990) (обычное называемого С89 или реже С90). Следует отметить, что это не обеспечивает полное соответствие стандарту ANSI/ISO. |
Опция >-ansi отключает расширения >gcc , которые обычно конфликтуют со стандартами ANSI/ISO. (Вследствие того, что эти расширения поддерживаются многими другими компиляторами С, на практике это не является проблемой.) Это также определяет макрос >__STRICT_ANSI__ (как описано далее в этой книге), который заголовочные файлы используют для поддержки среды, соответствующей ANSI/ISO. | |
>-pedantic | Выводит все предупреждения и сообщения об ошибках, требуемые для ANSI/ISO-стандарта языка С. Это не обеспечивает полное соответствие стандарту ANSI/ISO. |
>-Wall | Включает генерацию всех предупреждений >gcc , что обычно является полезным. Но таким образом не включаются опции, которые могут пригодиться в специфических случаях. Аналогичный уровень детализации будет установлен и для программы синтаксического контроля >lint в отношении вашего исходного кода, >gcc позволяет вручную включать и отключать каждое предупреждение компилятора. В руководстве по >gcc подробно описаны все предупреждения. |
5.2. Заголовочные файлы
Время от времени вы можете застать себя на том, что просматриваете заголовочные файлы Linux. Скорее всего, вы найдете рад конструкций, не совместимых со стандартом ANSI/ISO. Некоторые из них стоят того, чтобы в них разобраться. Все конструкции, рассматриваемые в этой книге, более подробно изложены в документации по >gcc
.
5.2.1. long long
Тип >long long
указывает на то, что блок памяти, по крайней мере, такой же большой, как >long
. На Intel i86 и других 32-разрядных платформах >long
занимает 32 бита, а >long long
— 64 бита. На 64-разрядных платформах указатели и >long long
занимают 64 бита, a >long
может занимать 32 или 64 бита в зависимости от платформы. Тип >long long
поддерживается в стандарте С99 (ISO/IEC 9899:1999) и является давним расширением С, которое обеспечивается >gcc
.
5.2.2. Встроенные функции
В некоторых частях заголовочных файлов Linux (в частности тех, что специфичны для конкретной системы) встроенные функции используются очень широко. Они так же быстры, как и макросы (нет затрат на вызовы функции), и обеспечивают все виды проверки, которые доступны при нормальном вызове функции. Код, вызывающий встроенные функции, должен компилироваться, по крайней мере, с включенной минимальной оптимизацией (>-O
).
5.2.3. Альтернативные расширенные ключевые слова
В >gcc
у каждого расширенного ключевого слова (ключевые слова, не описанные стандартом ANSI/ISO) есть две версии: само ключевое слово и ключевое слово, окруженное с двух сторон двумя символами подчеркивания. Когда компилятор применяется в стандартном режиме (обычно тогда, когда задействована опция >-ansi
), обычные расширенные ключевые слова не распознаются. Так, например, ключевое слово >attribute
в заголовочном файле должно быть записано как >__attribute__
.
5.2.4. Атрибуты
Расширенное ключевое слово >attribute
используется для передачи >gcc
большего объема информации о функции, переменной или объявленном типе, чем это позволяет код С, соответствующий стандарту ANSI/ISO. Например, атрибут >aligned
дает указание gcc о том, как именно выравнивать переменную или тип; атрибут >packed
указывает на то, что заполнение использоваться не будет; >noreturn
определяет то, что возврат из функции никогда не произойдет, что позволяет >gcc
лучше оптимизироваться и избегать фиктивных предупреждений.
Атрибуты функции объявляются путем их добавления в объявление функции, например:
>void die_die_die(int, char*) __attribute__ ((__noreturn__));
Объявление атрибута размещается между скобками и точкой с запятой и содержит ключевое слово >attribute
, за которым следуют атрибуты в двойных круглых скобках. Если атрибутов много, следует использовать список, разделенный запятыми.
>int printm(char*, ...)
>__attribute__((const,
> format(printf, 1, 2)));
В этом примере видно, что >printm
не рассматривает никаких значений, кроме указанных, и не имеет побочных эффектов, относящихся к генерации кода (>const
), printm указывает на то, что >gcc
должен проверять аргументы функции так же, как и аргументы >printf()
. Первый аргумент является форматирующей строкой, а второй — первым параметром замены (>format
).
Некоторые атрибуты будут рассматриваться по мере дальнейшего изложения материала (например, во время описания сборки совместно используемых библиотек в главе 8). Исчерпывающую информацию по атрибутам можно найти в документации
Одно из немногих изданий на русском языке, которое посвящено старейшей глобальной компьютерной сети "Fidonet". Сатирический справочник о жизни и смерти самого древнего сетевого сообщества, которое до сих пор существует среди нас.
В пособии излагаются основные тенденции развития организационного обеспечения безопасности информационных систем, а также подходы к анализу информационной инфраструктуры организационных систем и решению задач обеспечения безопасности компьютерных систем.Для студентов по направлению подготовки 230400 – Информационные системы и технологии (квалификация «бакалавр»).
В книге американских авторов — разработчиков операционной системы UNIX — блестяще решена проблема автоматизации деятельности программиста, системной поддержки его творчества, выходящей за рамки языков программирования. Профессионалам открыт богатый "встроенный" арсенал системы UNIX. Многочисленными примерами иллюстрировано использование языка управления заданиями shell.Для программистов-пользователей операционной системы UNIX.
Книга адресована программистам, работающим в самых разнообразных ОС UNIX. Авторы предлагают шире взглянуть на возможности параллельной организации вычислительного процесса в традиционном программировании. Особый акцент делается на потоках (threads), а именно на тех возможностях и сложностях, которые были привнесены в технику параллельных вычислений этой относительно новой парадигмой программирования. На примерах реальных кодов показываются приемы и преимущества параллельной организации вычислительного процесса.
Применение виртуальных машин дает различным категориям пользователей — от начинающих до IT-специалистов — множество преимуществ. Это и повышенная безопасность работы, и простота развертывания новых платформ, и снижение стоимости владения. И потому не случайно сегодня виртуальные машины переживают второе рождение.В книге рассмотрены три наиболее популярных на сегодняшний день инструмента, предназначенных для создания виртуальных машин и управления ими: Virtual PC 2004 компании Microsoft, VMware Workstation от компании VMware и относительно «свежий» продукт — Parallels Workstation, созданный в компании Parallels.
Книга содержит подробные сведения о таких недокументированных или малоизвестных возможностях Windows XP, как принципы работы с программами rundll32.exe и regsvr32.exe, написание скриптов сервера сценариев Windows и создание INF-файлов. В ней приведено описание оснасток, изложены принципы работы с консолью управления mmc.exe и параметрами реестра, которые изменяются с ее помощью. Кроме того, рассмотрено большое количество средств, позволяющих выполнить тонкую настройку Windows XP.Эта книга предназначена для опытных пользователей и администраторов, которым интересно узнать о нестандартных возможностях Windows.