аддитивное-выражение - мультипликативное-выражение
мультипликативное-выражение:
выражение-приведенное-к-типу
мультипликативное-выражение * выражение-приведенное-к-типу
мультипликативное-выражение / выражение-приведенное-к-типу
мультипликативное-выражение % выражение-приведенное-к-типу
выражение-приведенное-к-типу:
унарное-выражение
( имя-типа ) выражение-приведенное-к-типу
унарное-выражение:
постфиксное –выражение
++ унарное-выражение
-- унарное-выражение
унарный-оператор выражение-приведенное-к-типу
sizeof унарное-выражение
sizeof( имя-типа )
унарный-оператор: один из
& * + - ~ !
постфиксное-выражение:
первичное-выражение
постфиксное-выражение [ выражение ]
постфиксное-выражение ( список-аргументов-выраженийнеоб )
постфиксное-выражение , идентификатор
постфиксное-выражение -> идентификатор
постфиксное-выражение ++
постфиксное-выражение --
первичное -выражение:
идентификатор
константа
строка
( выражение )
список-аргументов-выражений:
выражение-присваивания
список-аргументов-выражений , выражение-присваивания
константа:
целая-константа
символьная-константа
константа-с-плавающей-точкой
константа-перечисление
Ниже приводится грамматика языка препроцессора в виде перечня структур управляющих строк. Для механического получения программы грамматического разбора она не годится. Грамматика включает символ текст, который означает текст обычной программы, безусловные управляющие строки препроцессора и его законченные условные конструкции.
управляющая-строка:
#define идентификатор последовательность-лексем
#define идентификатор ( идентификатор, ..., идентификатор) последовательность-лексем
#undef идентификатор
#include <имя-файла>
#include "имя-файла"
#include последовательность-лексем
#line константа "идентификатор"
#line константа
#error последовательность-лексемнеоб
#pragma последовательность-лексемнеоб
#
условная-конструкция-препроцессора
условная-конструкция-препроцессора:
if-строка текст elif-части else-частьнеоб #endif
if-строка:
#if константное-выражение
#ifdef идентификатор
#ifndef идентификатор
elif-части:
elif-строка текст
elif-частинеоб
elif-строка:
#elif константное-выражение
else-часть:
else-строка текст
else-строка:
#else
Приложение B. Стандартная библиотека
Настоящее приложение представляет собой краткое изложение библиотеки, утвержденной в качестве ANSI-стандарта. Сама по себе библиотека не является частью языка, однако, заложенный в ней набор функций, а также определений типов и макросов составляет системную среду, поддерживающую стандарт Си. Мы не приводим здесь несколько функций с ограниченной областью применения – те, которые легко синтезируются из других функций, а также опускаем все то, что касается многобайтовых символов и специфики, обусловленной языком, национальными особенностями и культурой.
Функции, типы и макросы объявляются в следующих стандартных заголовочных файлах:
Доступ к заголовочному файлу осуществляется с помощью строки препроцессора
#include <заголовочный файл>
Заголовочные файлы можно включать в любом порядке и сколько угодно раз. Строка #include не должна быть внутри внешнего объявления или определения и должна встретиться раньше, чем что-нибудь из включаемого заголовочного файла будет востребовано. В конкретной реализации заголовочный файл может и не быть исходным файлом.