日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

exit函数的头文件问题

發(fā)布時間:2025/4/16 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 exit函数的头文件问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

c標準對頭文件的解釋:
標準頭文件要有3點特征:
1)冪等性:多次包含和只包含一次沒差別
2)相互獨立性:標準頭文件之間不可互相包含//說明樓上cpazstido是錯的
3)文件級別:頭文件要在全局作用域內(nèi)被包含,在其他作用域內(nèi)(例如函數(shù)塊內(nèi))被包含行為未定義。

另外,c允許良性重定義。也就是重定義一個名字沒有造成危害那么重定義不會導致編譯出錯或報警。

這就可以解釋為什么兩個頭文件都有exit函數(shù)了。因為標準c要求c庫實現(xiàn)exit函數(shù),而最早標準c沒有支持多線程,所以exit在stdlib.h中聲明。后來多線程出現(xiàn)了,c為了支持多線程而出現(xiàn)了process.h,在其中自然而然要聲明exit,兩處聲明完全相同,所以是良性重定義且符合c邊準給頭文件的限制。如果在stdlib.h中刪除exit得聲明那將導致許多現(xiàn)有的程序無法正確聲明exit,這就是向后兼容性的考慮。

最后,c語言允許沒有聲明就使用函數(shù),沒顯式聲明的函數(shù)被隱式聲明成:
extern int funname(void);
所以在c中需要對函數(shù)正確聲明使得編譯器可以正確檢查參數(shù)匹配(對于可變參數(shù)函數(shù)例如printf如果沒有正確聲明調(diào)用將出錯,對一般函數(shù)雖然沒有聲明但是因為_cdecl調(diào)用方式由調(diào)用方清理參數(shù)所以即使參數(shù)傳入與錯誤聲明不一致也能正常工作)
注意,在C++中使用函數(shù)前必須聲明,否則將無法編譯,這點與c不同。

補充關于良性重定義:
下面的例子都是良性重定義:
#define a 1
#define a 1
int fun(int);
int fun(int);
下面的例子是惡性重定義,將導致編譯出錯或警告:
#define a 1
#define a 2 /*重定義警告*/
int a = 4;
int a = 4;/*重定義錯誤*/

補充一些為了兼容性考慮或者完備性考慮而良性重定義的例子:
1) define NULL (void *)0
幾乎所有c邊準頭文件(15個)都重定義了NULL
2)malloc.h和stdlib.h都包含了malloc函數(shù)

?

http://zhidao.baidu.com/question/134509702.html?fr=ala0

總結

以上是生活随笔為你收集整理的exit函数的头文件问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。