2015-10-01 6 views
1

Пожалуйста, объясните, почему в объявлении функции используется extern?Каково значение/значение явного ключевого слова extern в объявлении функции?

main.c

... 
pthread_create(&displayThread, &attr, displayThrFxn, &displayEnv); 
... 

display.h

extern Void *displayThrFxn(Void *arg); 

Почему extern?

display.c

... 
Void *displayThrFxn(Void *arg) 
{ 
    // some code 
} 
... 
+1

@RalphWiggum Не совсем, это вопрос о C, а не C++, и не имеет ничего общего с C++ линкера (что 'ехЬегп "C"' используется для в C++) – GalacticCowboy

+0

Упс, должен был отобрать неправильный результат в дублированном списке. –

ответ

3

Использование extern здесь вид лишнее. По умолчанию, если ничего не указано, функции имеют внешнюю привязку.

Цитирование C11 стандарта, глава §6.2.3

Если объявление идентификатора для функции не имеет хранение класса спецификатора, его связь определяется точно так, как если бы она была объявлена ​​с хранением класса спецификатор extern. [...]