(2)凡加寫了extern 的函數是外部函數.
第壹種理解好懂:
C語言的內部函數指的是C語言自帶的函數,無論是動態鏈接的或靜態鏈接的. 這些函數通過C語言的頭文件定義了.
例如, sin(),cos()等數學函數,在math.h中定義了,輸入輸出函數 printf(),fgetc()在stdio.h中定義了,時間函數表time(),ctime()等在time.h中定義了.還有許多其他內部函數.編程時,只要用#include <庫名.h>寫在編程頭部,程序中就可調用.
自定義函數,就是用戶自己寫的函數.
第二種凡加寫了extern 的函數是外部函數:
自定義函數可以與程序的main()寫在同壹個文件中,也可以寫在另壹個文件中,這時妳可能還另寫自己的頭文件或者寫extern....,告訴編譯器,main中用到的某某函數是"外部函數".
例如,main()在a.c中,自定義函數my_func()在a2.c中
a.c內容:
#include <stdio.h>
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 <stdio.h>
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