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

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

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 оперирует с двумя категориями...

Внешняя политика России 1894- 1917 гг. Внешнюю политику Николая II и первый период его царствования определяли, по меньшей мере три важных фактора...

Оценка качества Анализ документации. Имеющийся рецепт, паспорт письменного контроля и номер лекарственной формы соответствуют друг другу. Ингредиенты совместимы, расчеты сделаны верно, паспорт письменного контроля выписан верно. Правильность упаковки и оформления....

БИОХИМИЯ ТКАНЕЙ ЗУБА В составе зуба выделяют минерализованные и неминерализованные ткани...

Функциональные обязанности медсестры отделения реанимации · Медсестра отделения реанимации обязана осуществлять лечебно-профилактический и гигиенический уход за пациентами...

Определение трудоемкости работ и затрат машинного времени На основании ведомости объемов работ по объекту и норм времени ГЭСН составляется ведомость подсчёта трудоёмкости, затрат машинного времени, потребности в конструкциях, изделиях и материалах (табл...

Гидравлический расчёт трубопроводов Пример 3.4. Вентиляционная труба d=0,1м (100 мм) имеет длину l=100 м. Определить давление, которое должен развивать вентилятор, если расход воздуха, подаваемый по трубе, . Давление на выходе . Местных сопротивлений по пути не имеется. Температура...

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