Объявление extern
Функция:
Ключевое слово extern
следует использовать только при объявлении (не определении) функции. Обратите внимание, что функции по умолчанию имеют внешнюю связь, поэтомуключевое слово extern
в объявлении функции является избыточным.
extern void doSomething();
Определение extern
Функция:
Определение функции не следует указывать с ключевым словом extern
.Определение может быть в другом файле cpp.
void doSomething()
{
}
Объявление функции static
:
A static
ограничивает использование этой функции модулем перевода вкоторый объявлен.Вам необходимо указать ключевое слово при его объявлении.
static void doSomething();
Определение static
Функция:
Определение функции должно быть определено в том же TU.Не нужно указывать ключевое слово static
при его определении.
void doSomething()
{
}
Использование переменной extern
:
Вы объявляете переменную как extern
, когда хотитедля совместного использования одной и той же глобальной переменной в разных единицах перевода.
Вам необходимо объявить переменную с ключевым словом extern
, в то время как вам нужно определить ее в одном и только одном файле cpp.
file1.ч
extern int i;
file1.cpp
#include"file1.h"
int i = 10;
file2.cpp
#include "file1.h"
int main()
{
i = 40;
return 0;
}