1、如果只讀,那怎么用都行。如果有寫(xiě)的操作,最好避開(kāi),實(shí)在避不開(kāi)就要用信號(hào)量等機(jī)制防止多線程沖突。另外就是調(diào)用的函數(shù)要線程安全, thread-safe.具體那些函數(shù)線程安全,需要查閱手冊(cè)。
富錦網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),富錦網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為富錦上1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的富錦做網(wǎng)站的公司定做!
2、其實(shí)很簡(jiǎn)單,只要遵守了幾條很容易理解的規(guī)則,那么寫(xiě)出來(lái)的函數(shù)就是可重入的。1) 不要使用全局變量。因?yàn)閯e的代碼很可能覆蓋這些變量值。
3、禁止在extern C中包含頭文件。函數(shù) 函數(shù)設(shè)計(jì)的精髓:編寫(xiě)整潔函數(shù),同事把代碼有效組織起來(lái)。一個(gè)函數(shù)僅完成一個(gè)功能。重復(fù)代碼應(yīng)該盡可能提煉成函數(shù)。避免函數(shù)過(guò)長(zhǎng),新增函數(shù)不超過(guò)50行。
4、重入函數(shù),又叫再入函數(shù),是一種可以在函數(shù)體內(nèi)不直接或間接調(diào)用其自身的一種函數(shù)。再入函數(shù)可被遞歸調(diào)用,無(wú)論何時(shí),包括中斷函數(shù)在內(nèi)的任何函數(shù)都可以調(diào)入。再入函數(shù)在 C51編譯時(shí)使用的是模擬棧。
5、我也去答題訪問(wèn)個(gè)人頁(yè) 關(guān)注 展開(kāi)全部 先學(xué)習(xí)C語(yǔ)言的基礎(chǔ)知識(shí)?,F(xiàn)在正在學(xué)C語(yǔ)言的在校學(xué)生可以直接進(jìn)入第2步學(xué)習(xí)。 按照《C語(yǔ)言程序設(shè)計(jì)入門(mén)學(xué)習(xí)六步曲》進(jìn)行上機(jī)練習(xí)。 在上機(jī)練習(xí)時(shí)要養(yǎng)成良好的編程風(fēng)格。
1、從字面上的意思就是,可以重復(fù)進(jìn)入??芍厝胧窃诙嗳蝿?wù)系統(tǒng)下的概念,意思是這個(gè)函數(shù)可以在運(yùn)行到任意位置的時(shí)候被中斷去執(zhí)行其他任務(wù),并且返回的時(shí)候不會(huì)出現(xiàn)任何錯(cuò)誤。為什么在多任務(wù)的時(shí)候才有這種概念。
2、stdio 就是指 “standard input & output(標(biāo)準(zhǔn)輸入輸出),所以,源代碼中如用到標(biāo)準(zhǔn)輸入輸出函數(shù)時(shí),就要包含這個(gè)頭文件!stdlib 頭文件即standard library標(biāo)準(zhǔn)庫(kù)頭文件。
3、stdio.h是C語(yǔ)言的標(biāo)準(zhǔn)IO庫(kù)(標(biāo)準(zhǔn)輸入輸出庫(kù)),當(dāng)用到標(biāo)準(zhǔn)流(stdin、stdout、stderr)函數(shù)時(shí)就需要include它,比如printf函數(shù)、scanf函數(shù)、fscanf函數(shù)、sscanf函數(shù)這些都是stdio.h中的函數(shù)。
4、可重入函數(shù) 1)什么是可重入性?可重入(reentrant)函數(shù)可以由多于一個(gè)任務(wù)并發(fā)使用,而不必?fù)?dān)心數(shù)據(jù)錯(cuò)誤。
5、由于它不是標(biāo)準(zhǔn)C語(yǔ)言函數(shù),所以不能在所有的編譯器中使 用。但是,大多數(shù)的編譯器(如Windows上的)通常在stdlib.h頭文件中包含這個(gè)函數(shù)。在stdlib.h中與之有相反功能的函數(shù)是atoi。功能:把一整數(shù)轉(zhuǎn)換為字符串。
所謂可重入函數(shù)是指一個(gè)可以被多個(gè)任務(wù)調(diào)用的函數(shù)(過(guò)程),任務(wù)在調(diào)用時(shí)不必?fù)?dān)心數(shù)據(jù)是否會(huì)出錯(cuò)。不可重入函數(shù)在實(shí)時(shí)系統(tǒng)設(shè)計(jì)中被視為不安全函數(shù)。
所謂可重入是指一個(gè)可以被多個(gè)任務(wù)調(diào)用的過(guò)程,任務(wù)在調(diào)用時(shí)不必?fù)?dān)心數(shù)據(jù)是否會(huì) 出錯(cuò)。不可重入函數(shù)在實(shí)時(shí)系統(tǒng)設(shè)計(jì)中被視為不安全函數(shù)。
(1)使用了靜態(tài)數(shù)據(jù)結(jié)構(gòu)或者全局變量; (2)調(diào)用了malloc或free; (3)調(diào)用了標(biāo)準(zhǔn)I/O函數(shù);標(biāo)準(zhǔn)io庫(kù)很多實(shí)現(xiàn)都以不可重入的方式使用全局?jǐn)?shù)據(jù)結(jié)構(gòu)。
可重入函數(shù) 1)什么是可重入性?可重入(reentrant)函數(shù)可以由多于一個(gè)任務(wù)并發(fā)使用,而不必?fù)?dān)心數(shù)據(jù)錯(cuò)誤。
在C語(yǔ)言中,函數(shù)重載是不被允許的,因?yàn)镃語(yǔ)言不支持函數(shù)名稱相同但參數(shù)類型不同的函數(shù)重載。但是,我們可以通過(guò)函數(shù)名相同但參數(shù)類型不同的方式,實(shí)現(xiàn)對(duì)不同數(shù)據(jù)類型求絕對(duì)值的函數(shù)。
這在C語(yǔ)言中是不允許的,而在C++中上述定義是合法的,這就是C++中函數(shù)的重載(overload)。
從C語(yǔ)言的語(yǔ)法設(shè)計(jì)來(lái)說(shuō)是不支持的,早期的C編譯器未考慮過(guò)函數(shù)重載這一功能,所以就會(huì)有那么多類似的函數(shù)abs,labs,fabs等等(每種類型都要考慮一個(gè)不同的函數(shù)名)。
你就會(huì)發(fā)現(xiàn)只是類型不同的函數(shù)參數(shù)重載是不好實(shí)現(xiàn)的,編譯器不能夠識(shí)別你調(diào)用的是哪一個(gè)函數(shù)。函數(shù)的重載可以傳遞的參數(shù)個(gè)數(shù)不一致,函數(shù)返回值不一致,但是對(duì)于有相同參數(shù),參數(shù)類型不同這種重載一般是不能實(shí)現(xiàn)的。
C不支持;C++支持,因而在C++的頭文件中有很多因?yàn)橐虲兼容,extern C的語(yǔ)句就是避免有些C++中可以重載的函數(shù)在C中產(chǎn)生沖突。
1、void function (int x,int&y,int*z) // int&y 這是 C++ 的用法,不適用于 CC/C++ 的函數(shù)是以值傳遞的,用 int &y, int *z 這類方法才能改變傳遞進(jìn)來(lái)的參數(shù)值。
2、。你程序錯(cuò)在if(a=0) ,把比較語(yǔ)句寫(xiě)成賦值語(yǔ)句了,為避免犯錯(cuò),沒(méi)錯(cuò)比較可將數(shù)字寫(xiě)在左端,上面可寫(xiě)成if(0==a),養(yǎng)成這個(gè)好習(xí)慣!2。頭文件#includestdafx.h可不要!3。
3、一般來(lái)說(shuō),C語(yǔ)言程序被編譯為可執(zhí)行程序后,每次都輸出都是相同的,但有些特殊情況例外,比如,代碼中引入了隨機(jī)變量,并讓它出現(xiàn)在輸出結(jié)果中。
4、你傳的參數(shù)是值,在函數(shù)里交換完后,會(huì)釋放空間,而且你并沒(méi)有接收函數(shù)傳出的數(shù)據(jù)。
5、這是一個(gè)未定義行為,所謂未定義行為,就是C語(yǔ)言標(biāo)準(zhǔn)沒(méi)有規(guī)定這種情況該怎么處理,由各編譯器自行決定。
6、在C語(yǔ)言中,程序沒(méi)有報(bào)錯(cuò)并不意味著程序一定是正確的。有時(shí)候,程序可能會(huì)出現(xiàn)邏輯錯(cuò)誤或者運(yùn)行時(shí)錯(cuò)誤,導(dǎo)致程序無(wú)法執(zhí)行或者輸出不符合預(yù)期。
,printf()函數(shù)是格式化輸出函數(shù), 一般用于向標(biāo)準(zhǔn)輸出設(shè)備按規(guī)定格式輸出信息。 2,printf()函數(shù)的調(diào)用格式為: printf(, )。 3,格式輸出,它是c語(yǔ)言中產(chǎn)生格式化輸出的函數(shù)(在 stdio.h 中定義)。
其實(shí)printf不是重載,c語(yǔ)言不支持函數(shù)重載 這句話是對(duì)的。printf函數(shù)是通過(guò)變長(zhǎng)參數(shù)表實(shí)現(xiàn)的。你可以查看一下printf的函數(shù)原型聲明。printf函數(shù)的實(shí)現(xiàn)在不同的機(jī)器上是不同的,但提供的接口是一致的。
-- printf函數(shù)執(zhí)行過(guò)程中,可能主中斷可能會(huì)再次被觸發(fā),從而再次調(diào)用printf,造成printf函數(shù)的重入。而很多printf函數(shù)由于調(diào)用了全局資源,是不支持可重入的,會(huì)造成災(zāi)難性后果。
打印出來(lái)的結(jié)果是Sunday Sunday、printf的參數(shù)壓棧順序是自右至左, 也就是那兩個(gè)函數(shù)調(diào)用是先執(zhí)行右邊的后執(zhí)行左邊的,然后printf才會(huì)打印出內(nèi)容。
補(bǔ)充那位朋友的說(shuō)法,其實(shí)也不算是錯(cuò)覺(jué),你把printf放里面的時(shí)候,系統(tǒng)的調(diào)用運(yùn)行開(kāi)銷(xiāo),再加上CPU處理指令的時(shí)間差,而且printf函數(shù)是可重入的等等,是會(huì)導(dǎo)致計(jì)時(shí)跳動(dòng)的。(個(gè)人理解,可能有些錯(cuò)誤,看看就好)。