Поделиться через


Использование extern, чтобы определить связь

extern string-literal { declaration-list }
extern string-literal declaration

Заметки

extern ключевое слово объявляет переменную или функцию и определяет, что оно имеет внешний переключателя (его имя отображается из файлов, отличные от тех, в котором он определяет).Изменение переменной extern указывает, что переменная содержит статическую длительность (ее выборе когда программа инициирует и освобождаются, когда заканчивается программы).Переменная или функция может быть указаны в другом файле источника или более поздней версии, в том же файле.Объявление переменных и функций в области файла внешнее по умолчанию.

Пример

// specifying_linkage1.cpp
int i = 1;
void other();

int main() {
   // Reference to i, defined above:
   extern int i;
}

void other() {
   // Address of global i assigned to pointer variable:
   static int *external_i = &i;

   // i will be redefined; global i no longer visible:
   // int i = 16;
}

В C++, при использовании со строкой extern указывает, что соглашения компоновки другого языка используются для деклараторов.Функции и данные c# можно получить доступ только если ранее они объявлены как имеющие компоновка c.Однако их следует определить в отдельном компилированной единицы измерения.

Microsoft C++ поддерживает строки «C» и «C++» в string-literal поле.весь стандарт включает файлы использует extern Синтаксис «c», чтобы позволить функции библиотеки времени выполнения, который необходимо использовать в программах C++.

В следующем примере показан альтернативные способы объявления имена, которые имеют компоновка c:

// specifying_linkage2.cpp
// compile with: /c
// Declare printf with C linkage.
extern "C" int printf( const char *fmt, ... );

//  Cause everything in the specified header files
//   to have C linkage.
extern "C" {
   // add your #include statements here
   #include <stdio.h>
}

//  Declare the two functions ShowChar and GetChar
//   with C linkage.
extern "C" {
   char ShowChar( char ch );
   char GetChar( void );
}

//  Define the two functions ShowChar and GetChar
//   with C linkage.
extern "C" char ShowChar( char ch ) {
   putchar( ch );
   return ch;
}

extern "C" char GetChar( void ) {
   char ch;

   ch = getchar();
   return ch;
}

// Declare a global variable, errno, with C linkage.
extern "C" int errno;

См. также

Ссылки

Ключевые слова C++

Спецификации компоновки

extern описатель Хранени-Класса

Основные понятия

Расширения функциональности идентификаторов

Связь