Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

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





С помощью спецификации-связи можно связать ($$R.3.3) фрагментыпрограмм на С++ и на другом языке: спецификация-связи: extern строка-литерал { список-описаний opt } extern строка-литерал описание список-описаний: описание список-описаний описание Требуемое связывание задается с помощью строки-литерала. Ее назначениеопределяется реализацией. Но во всех реализациях должно бытьпредусмотрено связывание с функцией на языке С ("С") и с функциейна языке С++ ("С++"). По умолчанию связывание задается как "С++",например, complex sqrt(complex); // по умолчанию связывание с C++ extern "C" { double sqrt(double); // связывание с C } Спецификации связи могут быть вложенными. Спецификация связине задает область видимости. Спецификация-связи может встретитьсятолько в файловой области видимости ($$R.3.2). Спецификация-связидля класса относится к объектам, описанным в нем, и функциям, неявляющимся членами. Спецификация-связи, относящаяся к некоторойфункции, относится и ко всем объектам и функциям, описанным в ней.Описание связи, содержащее неизвестную для реализации строку,считается ошибочным. Если функция имеет более одной спецификации-связи, то они должныбыть согласованы, т.е. задавать одну и ту же строку-литерал.Описание функции без указания спецификации-связи не должнопредшествовать первому указанию спецификации связи для этой функции.Функция может быть описана без указания спецификации связи дажепосле явного указания спецификации связи, но связывание, явно заданноев более раннем описании, не будет устранено таким описанием функции. Из множества перегруженных функций ($$R.13) с данным именемне более одной может иметь связывание с языком С, см. $$R.7.4. Связывание можно установить для объектов, например: extern "C" { //... _iobuf_iob[_NFILE]; //... int _flsbuf(unsigned,_iobuf*); //... } Когда задается спецификация связи, то функции и объекты можно описать какстатические внутри { }. Для таких функций или объектов командасвязывания игнорируется. Иначе, функция, описанная при задании связи,трактуется, как если бы она была явно описана как extern, например,ниже второе описание ошибочно ($$R.7.1.1): extern "C" double f(); static double f(); // ошибка Объект, описанный внутри конструкции extern "C" { /*... */ } все же считается определенным, а не просто описанным. Связывание объектов на С++ с объектами, определенными на другихязыках, так же как и обратное связывание, зависит от языков иреализации. Такое связывание возможно только в том случае, когдаалгоритмы размещения объектов в памяти являются достаточно схожимидля двух языков. Если для задания связи в строке-литерале из спецификации-связииспользуется имя языка программирования, то рекомендуется, чтобынаписание этого имени копировалось из документа, определяющего данныйязык, например, Ada (а не ADA) и Fortran (а не FORTRAN).







Дата добавления: 2015-09-04; просмотров: 386. Нарушение авторских прав; Мы поможем в написании вашей работы!




Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Ганглиоблокаторы. Классификация. Механизм действия. Фармакодинамика. Применение.Побочные эфффекты Никотинчувствительные холинорецепторы (н-холинорецепторы) в основном локализованы на постсинаптических мембранах в синапсах скелетной мускулатуры...

Шов первичный, первично отсроченный, вторичный (показания) В зависимости от времени и условий наложения выделяют швы: 1) первичные...

Предпосылки, условия и движущие силы психического развития Предпосылки –это факторы. Факторы психического развития –это ведущие детерминанты развития чел. К ним относят: среду...

Понятие о синдроме нарушения бронхиальной проходимости и его клинические проявления Синдром нарушения бронхиальной проходимости (бронхообструктивный синдром) – это патологическое состояние...

Опухоли яичников в детском и подростковом возрасте Опухоли яичников занимают первое место в структуре опухолей половой системы у девочек и встречаются в возрасте 10 – 16 лет и в период полового созревания...

Способы тактических действий при проведении специальных операций Специальные операции проводятся с применением следующих основных тактических способов действий: охрана...

Studopedia.info - Студопедия - 2014-2025 год . (0.011 сек.) русская версия | украинская версия