extern int a,B[];
В объявлении переменной:
-задан тип переменной;
-задано имя переменной.
int strcmp();
int strcmp(char*, char*);
extern int strcmp();
extern int strcmp(char*, char*);
B объявлении функции:
-задается тип функции;
-задается имя функции;
-может быть задан список типов формальных параметров (прототип);
-запоминается факт наличия функции с указанными именем, результатом и, возможно, параметрами.
Различие между определением и объявлением имеет принципиальное значение: с определением связан процесс создания программного объекта, соответствующего переменной или функции, превращение их описания в программе во внутреннее представление в памяти (трансляция). Объявление - всего лишь подтверждение программистом факта существования переменной или функции, которые по каким-либо причинам транслятор в данный момент " не видит" . Объявлений одной и той же переменной или функции в программе может быть сколь угодно много, а определение -всегда одно. Кроме того, объявления транслятор всегда " принимает на веру" , поэтому ответственность за корректность объявлений несет программист.