青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

小明思考

高性能服務器端計算
posts - 70, comments - 428, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

漫談函數的返回值

Posted on 2006-04-25 16:55 小明 閱讀(2420) 評論(2)  編輯 收藏 引用 所屬分類: C/C++
在windows的世界里面,很少有API沒有返回值。但是到底返回什么代表成功,這個沒有標準。我發現主要有三種模式

1 . 返回非0表示成功,返回0表示失敗

大多數Win32 Platform API都是這樣,比如

int?result?=MoveFileEx(szTempName,?
????????????????????
"allcaps.txt",?
????????????????????MOVEFILE_REPLACE_EXISTING);

if(!result)
????{?
????????printf(
"Could?not?move?file.?error:%d",GetLastError());
????????
return?0;
????}

使用這種方法。你必須提供類似GetLastError的取錯誤的方法,而且你必須保證這個函數是thread-safe的,每個線程能維護自己的錯誤信息。

2. 返回大于等于0表示成功,返回-1表示失敗
socket api大部分是這樣設計的

while(?bytesRecv?!=?SOCKET_ERROR?)?{
????bytesRecv?
=?recv(?ConnectSocket,?recvbuf,?32,?0?);
????
if?(?bytesRecv?==?0?||?bytesRecv?==?WSAECONNRESET?)?{
??????printf(?
"Connection?Closed.\n");
??????
break;
????}
????printf(?
"Bytes?Recv:?%ld\n",?bytesRecv?);
??}

這樣的好處是返回值就可以用來表示成功和狀態。比如這里的recv就可以返回收到的字節數。但是你還是要有一個查詢錯誤的API,like WSAGetLastError().

3.返回0表示成功

COM的接口大部分是這樣設計的
if(?FAILED(lpdd->QueryInterface(IID_IDirectDraw7,?(LPVOID?*)?&lpdd)))
????{
??????????
//error?handle?and?return
????}





其他的一些考慮

1.如何定義錯誤值?
簡單的一點使用宏連續定義,like
#define?E_NO_FILE?1
#define?E_BAD_FILE?2
復雜的一點就像COM,嚴格的定義每一位的意義
這種情況下你可以提供一個宏來創建錯誤代碼,like
#define?MAKE_HRESULT(sev,fac,code)\

(?(HRESULT)?(((unsigned?
long)(sev)<<31)?|?((unsigned?long)(fac)<<16)?\

|?((unsigned?long)(code)))?)

2.可以提供一個宏或者函數來幫助判斷是否成功
比如COM提供了FAILED宏來幫助你判斷COM的返回值
#define?FAILED(Status)?????((HRESULT)(Status)<0)

3.如果只有錯誤和成功兩個返回值,考慮使用bool來返回
這個適用于C++,優點是意義很清晰.返回 true就是成功,false就是失敗.

4.要使用異常來表示錯誤的狀態么?
使用異常的好處就是返回值被省出來了,可以不返回或者返回其他信息,還有益于定義錯誤類型和簡化程序流程。缺點就是C++對異常支持還不夠好,沒有finally,每一家編譯器支持也不一樣,實現可能大不同.

Feedback

# re: 漫談函數的返回值  回復  更多評論   

2006-04-25 18:05 by <font color="#FF00FF" >Stone Jiang
如果是像
isEmpty()這樣的函數,返回非0表示真,返回0表示假

像用于框架底層,操作(函數調用)失敗需要將錯誤原因拋向調用層(直到在UI中顯示出相關狀態信息)時,返回0表示成功,非0表示失敗.

以上是我期望的"統一"的方式.呵呵

# re: 漫談函數的返回值  回復  更多評論   

2006-05-03 23:01 by 史傳紅
@&lt;font color=&quot;#FF00FF&quot; &gt;Stone Jiang
希望是這樣的.
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美 日韩 国产一区二区在线视频 | 亚洲高清色综合| 欧美国产一区二区| 久久高清免费观看| 一本到12不卡视频在线dvd | 国外视频精品毛片| 欧美日韩免费高清一区色橹橹| 欧美日韩国产一区精品一区| 蜜臀av一级做a爰片久久| 欧美精品一二三| 国产一区二区电影在线观看| 在线日韩中文字幕| 午夜在线电影亚洲一区| 欧美伊久线香蕉线新在线| 欧美成人精品一区二区三区| 日韩视频在线播放| 亚洲综合日本| 欧美成人蜜桃| 欧美成年人视频| 日韩一级精品视频在线观看| 亚洲午夜在线视频| 欧美高清一区| 性色av一区二区三区红粉影视| 麻豆久久精品| 亚洲春色另类小说| 夜夜嗨av色一区二区不卡| 国产亚洲一本大道中文在线| 亚洲图片自拍偷拍| 日韩写真在线| 国产精品视频一| 小处雏高清一区二区三区| 亚洲人成人一区二区在线观看| 亚洲午夜电影网| 国产精品美女久久福利网站| 亚洲精品国精品久久99热| 久久躁狠狠躁夜夜爽| 久久久xxx| 91久久在线| 亚洲视频在线二区| 一本久道久久综合婷婷鲸鱼| 久久gogo国模啪啪人体图| 一区二区欧美日韩| 国产乱码精品一区二区三区av| 亚洲一区二区av电影| 亚洲网站视频| 黄色日韩网站| 久久久综合网| 久久精品国产999大香线蕉| 国语对白精品一区二区| 久久综合国产精品台湾中文娱乐网 | 校园春色国产精品| 亚洲人成高清| 欧美激情在线狂野欧美精品| 这里只有精品电影| 欧美mv日韩mv国产网站| 欧美一区二区视频在线观看2020| 蜜桃精品一区二区三区| 另类av导航| 国产综合一区二区| 亚洲欧美中日韩| 亚洲视频精品| 久久狠狠一本精品综合网| 亚洲人成在线观看网站高清| 亚洲一区二区三区四区中文| 日韩午夜电影av| 久久综合狠狠综合久久综青草| 午夜精品久久久久久久99热浪潮| 麻豆久久久9性大片| 久久在线视频在线| 激情国产一区| 久久综合影视| 免费在线成人av| 亚洲二区在线| 日韩亚洲视频在线| 欧美日韩性视频在线| 亚洲国产精品va| 一本色道久久| 国产精品―色哟哟| 午夜精品偷拍| 你懂的视频欧美| 亚洲乱码国产乱码精品精天堂 | 欧美先锋影音| 亚洲午夜精品网| 久久精品国产清高在天天线| 国产日韩在线视频| 午夜国产不卡在线观看视频| 欧美人妖在线观看| 西瓜成人精品人成网站| 麻豆成人综合网| 亚洲欧美电影院| 亚洲第一在线综合网站| 欧美日在线观看| 另类酷文…触手系列精品集v1小说| 亚洲国产精品一区二区久| 亚洲欧美日本日韩| 亚洲国产欧美一区| 国产色视频一区| 欧美日韩在线免费视频| 久久久久久久久蜜桃| 亚洲一区二区三区在线播放| 欧美激情按摩在线| 久久免费视频这里只有精品| 亚洲一区在线观看视频 | 激情综合激情| 国产精品a久久久久| 欧美另类亚洲| 欧美日韩一二区| 欧美区高清在线| 欧美女同在线视频| 欧美成人有码| 裸体素人女欧美日韩| 麻豆久久精品| 欧美激情麻豆| 欧美电影在线观看完整版| 欧美福利影院| 欧美视频一区在线观看| 欧美日韩亚洲综合一区| 国产精品第一页第二页第三页| 欧美日韩免费观看一区三区| 欧美日韩视频在线一区二区观看视频| 欧美a级在线| 国产精品久久久久久一区二区三区 | 国产自产女人91一区在线观看| 国产精品卡一卡二| 海角社区69精品视频| 亚洲人成7777| 亚洲欧美精品| 欧美顶级少妇做爰| 一区二区高清视频在线观看| 午夜精品久久久久久99热软件 | 久久精品夜色噜噜亚洲a∨| 久久精品在线观看| 亚洲免费观看高清在线观看 | 亚洲美女视频在线观看| 午夜精品婷婷| 欧美日韩国产综合久久| 狠狠色狠狠色综合日日小说| 中文久久精品| 亚洲国产欧美一区二区三区丁香婷| 99xxxx成人网| 欧美精品亚洲精品| 亚洲电影专区| 免费观看成人鲁鲁鲁鲁鲁视频| 一区二区欧美国产| 欧美日韩精品一区视频 | 久久综合九色| 国产一区在线看| 久久精品人人| 久久精品一区二区三区四区| 国产精品久久久亚洲一区| 一本大道av伊人久久综合| 亚洲欧洲日本一区二区三区| 另类亚洲自拍| 99精品视频网| 亚洲视频一区在线观看| 欧美特黄一级大片| 亚洲欧美成aⅴ人在线观看| 中文在线一区| 国产日韩欧美亚洲一区| 欧美日韩和欧美的一区二区| 一区二区欧美视频| 亚洲永久免费| 亚洲激情在线观看| 国产欧美一区二区三区久久人妖| 亚洲欧美在线播放| 久久综合色88| 亚洲视频欧洲视频| 久久久精品国产免费观看同学 | 欧美三级电影大全| 久久精品国产亚洲a| 蜜桃av综合| 久久一区免费| 国产精品久久久久av免费| 久久视频在线看| 欧美午夜精品久久久久久久 | 欧美在线一区二区三区| 亚洲电影成人| 欧美一级欧美一级在线播放| 亚洲人成7777| 免费欧美高清视频| 麻豆精品视频在线| 国产主播在线一区| 欧美一区二区| 久久久一区二区三区| 国产欧美日韩一区| 香蕉成人伊视频在线观看| 一区二区三区欧美在线观看| 久久综合伊人77777| 免费成人av| 亚洲国产日韩美| 欧美成黄导航| 夜夜嗨av一区二区三区四区 | 麻豆久久精品| 樱桃国产成人精品视频| 久久人91精品久久久久久不卡 | 久久精品国产99国产精品| 99国产一区| 欧美一级黄色网| 激情久久久久久久| 欧美福利精品|