函式訪問引數受限的處理方法
在我們使用函式的時候,有很多時候由於引數長度的限制而導致我們功能不完善。
比如:
int funcA(char offlen, unsigned char len, char *pbuf)
{
…
}
int funcB(char offlen, int len, char *pbuf)
{
unsigned long ulRet = 0;
ulRet = funcA(offlen, (char)len, pbuf);
…
}
現在我們有一個main函式要訪問funcB函式,獲取它的返回資料pbuf的內容,我們在傳參的時候,如果傳進去一個len大於255長度的引數,那我很明顯這個函式會返回失敗,在這種情況下我們該如何處理呢?
方法一:
修改funcA的函式原型,將其修改為:
int funcA(char offlen, unsigned int len, char *pbuf)
{
…
}
這是一種比較好的方法,但是若是其中有某些delay呢,而且其中的delay是cpu死等的處理方式,我們該怎麼辦,如果我們傳如一個很大的是資料很可能就會導致cpu的掛死;
方法二:
修改將funcA的原型保留,但是給其修改一個名字,funcC,然後我們在使用funcA這個函式名字去封裝funcC,這樣對外的介面不會改變,但是我們的功能已經作出完善了。
int funcC(char offlen, unsigned char len, char *pbuf)
{
…
}
int funcA(char offlen, unsigned char len, char *pbuf)
{
if(len < 255)
funcC(offlen, len, pbuf);
else
{…
for(i=0;i<(len/255);i++)
{
funcC(offlen+(i*255), len, pbuf);
}
}
}
這種處理方式可以很好的解決我們的問題
相關文章
- JavaScript 事件處理函式傳遞引數JavaScript事件函式
- onclick事件處理函式傳遞引數事件函式
- C#中Main函式後引數的處理C#AI函式
- JavaScript為事件處理函式傳遞引數JavaScript事件函式
- javascript如何給事件處理函式傳遞引數JavaScript事件函式
- 如何給js的onclick事件處理函式傳遞引數JS事件函式
- js如何給繫結的事件處理函式傳遞引數JS事件函式
- 函式定義、函式的引數、函式的預設引數函式
- 方法(函式)的定義與引數函式
- MySQL訪問受限的問題分析MySql
- php函式引用傳遞引數的方法PHP函式
- prototype原型繼承的方法無法訪問函式的私有變數原型繼承函式變數
- 函式呼叫引數變數傳值的問題函式變數
- 函式引數 引數定義函式型別函式型別
- 命令列引數選項處理:getopt()及getopt_long()函式使用命令列函式
- 兩個資料訪問受限的問題
- python函式每日一講 - divmod數字處理函式Python函式
- MyBatis 引數處理MyBatis
- JavaScript 中的引數處理JavaScript
- thinkphp 輸出變數使用函式處理PHP變數函式
- 3.3.2 函式的預設引數和佔位引數 函式過載函式
- 磁碟處理函式函式
- 字元處理函式字元函式
- java函式陣列引數的複製問題Java函式陣列
- 函式的引數傳遞函式
- 函式引數的 Default value函式
- 程式中的函式引數函式
- Javascript函式引數求值——Thunk函式JavaScript函式
- 函式基礎和函式引數函式
- js在函式中未定義的變數的處理JS函式變數
- oracle函式大全-字串處理函式Oracle函式字串
- Python: 受限制的 "函式呼叫"Python函式
- github訪問受限解決辦法Github
- python中函式引數傳遞的幾種方法Python函式
- 函式的動態引數 及函式巢狀函式巢狀
- 物件,函式作為一個函式的引數物件函式
- Excel函式應用教程:函式的引數(轉)Excel函式
- 【封裝小技巧】數字處理函式的封裝封裝函式