有兩種理解.(1)庫函式是C語言的內部函式或自帶函式,外部函式即程式設計師自定函式.
(2)凡加寫了extern 的函式是外部函式.
第一種理解好懂:
C語言的內部函式指的是C語言自帶的函式,無論是動態連結的或靜態連結的. 這些函式透過C語言的標頭檔案定義了.
例如, sin(),cos()等數學函式,在math.h中定義了,輸入輸出函式 printf(),fgetc()在stdio.h中定義了,時間函式表time(),ctime()等在time.h中定義了.還有許多其他內部函式.程式設計時,只要用#include 寫在程式設計頭部,程式中就可呼叫.
自定義函式,就是使用者自己寫的函式.
第二種凡加寫了extern 的函式是外部函式:
自定義函式可以與程式的main()寫在同一個檔案中,也可以寫在另一個檔案中,這時你可能還另寫自己的標頭檔案或者寫extern....,告訴編譯器,main中用到的某某函式是"外部函式".
例如,main()在a.c中,自定義函式my_func()在a2.c中
a.c內容:
#include
extern float my_func(float a);
main()
{
printf("result=%f\n",my_func(2.0));
}
a2.c 內容:
float my_func(float a)
return a;
編譯:
cl -c a.c [得到a.obj]
cl -c a2.c [得到a2.obj]
cl a.obj a2.obj [連結成a.exe]
執行:
a.exe
得
result=2.000000
extern float my_func() 是外部說明,告訴編譯,main()裡的my_func是外部函式,要透過連結(.obj)得到.
如果把my_func寫在a.c裡:
float my_func(float a){
retun a;
my_func() 就不是外部函式.
cl a.c [得a.exe]
有兩種理解.(1)庫函式是C語言的內部函式或自帶函式,外部函式即程式設計師自定函式.
(2)凡加寫了extern 的函式是外部函式.
第一種理解好懂:
C語言的內部函式指的是C語言自帶的函式,無論是動態連結的或靜態連結的. 這些函式透過C語言的標頭檔案定義了.
例如, sin(),cos()等數學函式,在math.h中定義了,輸入輸出函式 printf(),fgetc()在stdio.h中定義了,時間函式表time(),ctime()等在time.h中定義了.還有許多其他內部函式.程式設計時,只要用#include 寫在程式設計頭部,程式中就可呼叫.
自定義函式,就是使用者自己寫的函式.
第二種凡加寫了extern 的函式是外部函式:
自定義函式可以與程式的main()寫在同一個檔案中,也可以寫在另一個檔案中,這時你可能還另寫自己的標頭檔案或者寫extern....,告訴編譯器,main中用到的某某函式是"外部函式".
例如,main()在a.c中,自定義函式my_func()在a2.c中
a.c內容:
#include
extern float my_func(float a);
main()
{
printf("result=%f\n",my_func(2.0));
}
a2.c 內容:
float my_func(float a)
{
return a;
}
編譯:
cl -c a.c [得到a.obj]
cl -c a2.c [得到a2.obj]
cl a.obj a2.obj [連結成a.exe]
執行:
a.exe
得
result=2.000000
extern float my_func() 是外部說明,告訴編譯,main()裡的my_func是外部函式,要透過連結(.obj)得到.
如果把my_func寫在a.c裡:
#include
float my_func(float a){
retun a;
}
main()
{
printf("result=%f\n",my_func(2.0));
}
my_func() 就不是外部函式.
編譯:
cl a.c [得a.exe]
執行:
a.exe
得
result=2.000000