Читаем Справочное руководство по C++ полностью

 идентификатор

спецификация-перечисления:

 enum идентификатор opt { список-перечисления }

список-перечисления:

 элемент-перечисления

 список-перечисления, элемент-перечисления

элемент-перечисления:

 идентификатор

 идентификатор = выражение-константа

Все идентификаторы из списка-перечисления считаются описанными как константы и могут появляться всюду, где требуются константы. Если не было элементов перечисления с =, то значения констант начинаются с нуля и последовательно увеличиваются на единицу по мере продвижения в списке слева направо. Если элемент перечисления встретился с =, то его идентификатор принимает заданное значение, а последующие идентификаторы без инициализирующей части будут получать возрастающие значения, начиная с заданного. Значение элемента перечисления должно быть типа int или значением, которое можно привести к int с помощью стандартных целочисленных преобразований (§R.4.1).

Имена элементов перечисления должны быть отличны от имен обычных переменных и других элементов перечисления той же области видимости. Значения элементов перечисления не обязаны отличаться друг от друга. Считается, что элемент перечисления описан с момента появления его идентификатора или инициализирующего значения, (если оно есть). Например, в определениях

enum {a, b, c=0};

enum {d, e, f=e+2};

значения a, c, и d заданы как 0, b и e как 1, а f как 3.

Каждое перечисление является целочисленным типом, который отличен от всех других целочисленных типов. Типом элемента перечисления считается данное перечисление. Значение элемента перечисления или объекта типа перечисления преобразуется к целому с помощью стандартных целочисленных преобразований (§R.4.1). Например, в следующем фрагменте:

enum color {red, yellow, green=20, blue};

color col = red;

color* cp =&col

if (*cp == blue) //…

color задан как целочисленный тип, описывающий разные цвета, col описан как объект этого типа, а cp как указатель на объект этого типа. Возможными значениями объекта типа color являются red, yellow, green, blue. Эти значения можно преобразовать в целые значения 0, 1, 20 и 21. Поскольку каждое перечисление - это отдельный тип, объекту типа color можно присваивать только значения типа color, например,

color c = 1; // ошибка: несоответствие типов

 // нет преобразования от int в color

int i = yellow; // нормально: yellow преобразуется в int со значением 1

 // стандартное целочисленное преобразование

Обратитесь также к §R.18.3.

Элементы перечисления, определенные в классе (§R.9), относятся к области видимости этого класса, и к ним можно обращаться извне функций-членов этого класса только с помощью явного уточнения именем класса (§R.5.1). Имя самого типа перечисления локально в этом классе (§R.9.7), например,

class X {

public:

 enum direction {left='l', right='r'};

 int f(int i)

 { return i==left ? 0 : i==right ? 1 : 2; }

};


void g(X* p)

{

 direction d; // ошибка: `direction' вне

 int i; // области видимости

 i = p-›f(left); // ошибка: `left' тоже невидим

 i = p-›f(X::right); // нормально

 //…

}

R.7.3 Описания asm

Описание asm имеет вид:

описание-asm:

 asm ( строка-литерал );

Назначение описания asm определяется реализацией. Обычно оно используется для передачи информации от транслятора к ассемблеру.

R.7.4 Спецификации связи

С помощью спецификации-связи можно связать (§R.3.3) фрагменты программ на C++ и на другом языке:

спецификация-связи:

 extern строка-литерал { список-описаний opt }

 extern строка-литерал описание

список-описаний:

 описание

 список-описаний описание

Требуемое связывание задается с помощью строки-литерала. Ее назначение определяется реализацией. Но во всех реализациях должно быть предусмотрено связывание с функцией на языке C ("C") и с функцией на языке C++ ("C++"). По умолчанию связывание задается как "C++", например,

complex sqrt(complex); // по умолчанию связывание с C++

extern "C" {

 double sqrt(double); // связывание с C

}

Перейти на страницу:

Похожие книги

C++ Primer Plus
C++ Primer Plus

C++ Primer Plus is a carefully crafted, complete tutorial on one of the most significant and widely used programming languages today. An accessible and easy-to-use self-study guide, this book is appropriate for both serious students of programming as well as developers already proficient in other languages.The sixth edition of C++ Primer Plus has been updated and expanded to cover the latest developments in C++, including a detailed look at the new C++11 standard.Author and educator Stephen Prata has created an introduction to C++ that is instructive, clear, and insightful. Fundamental programming concepts are explained along with details of the C++ language. Many short, practical examples illustrate just one or two concepts at a time, encouraging readers to master new topics by immediately putting them to use.Review questions and programming exercises at the end of each chapter help readers zero in on the most critical information and digest the most difficult concepts.In C++ Primer Plus, you'll find depth, breadth, and a variety of teaching techniques and tools to enhance your learning:• A new detailed chapter on the changes and additional capabilities introduced in the C++11 standard• Complete, integrated discussion of both basic C language and additional C++ features• Clear guidance about when and why to use a feature• Hands-on learning with concise and simple examples that develop your understanding a concept or two at a time• Hundreds of practical sample programs• Review questions and programming exercises at the end of each chapter to test your understanding• Coverage of generic C++ gives you the greatest possible flexibility• Teaches the ISO standard, including discussions of templates, the Standard Template Library, the string class, exceptions, RTTI, and namespaces

Стивен Прата

Программирование, программы, базы данных
Access 2002: Самоучитель
Access 2002: Самоучитель

В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.

Павел Юрьевич Дубнов

Программирование, программы, базы данных / ОС и Сети / Книги по IT