[問題] 有關函式回傳值的問題

看板C_and_CPP作者 (evilkiss)時間15年前 (2009/08/02 18:45), 編輯推噓0(009)
留言9則, 2人參與, 最新討論串1/1
#define RNOK( exp ) \ { \ const ERR_VAL nMSysRetVal = ( exp ); \ if( ERR_CLASS::m_nOK != nMSysRetVal ) \ { \ ASSERT( 0 ); \ return nMSysRetVal; \ } \ } 這是JMVC(multiview video coding)的一個常見的函式RNOK 不知道有沒有相同的戰友 主要問題是RNOK()使用上並沒有變數去承接他的回傳值nMSysRetVal 如H264AVCEncoderTest* pcH264AVCEncoderTest = NULL; RNOK( H264AVCEncoderTest::create( pcH264AVCEncoderTest ) ); 那為什麼要回傳nMSysRetVal? 我對C沒有很熟 如果是很基本的問題別見笑 PS:如果有戰友 想請問一下ASSERT( 0 );是做什麼事情 我只找到#define ASSERT assert 但assert就沒有其他定義了 -- http://www.wretch.cc/album/evilkiss 有空來逛逛阿 交個朋友 一起打網球吧 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.124.43.177

08/02 20:11, , 1F
改成
08/02 20:11, 1F
#define RNOK( exp ) { const ERR_VAL nMSysRetVal = ( exp ); if( ERR_CLASS::m_nOK != nMSysRetVal ) ASSERT( 0 ); (ERR_CLASS::m_nOK!=nMSysRetVal?nMSysRetVal:NULL) } danny8376:應該就可以得到回傳值了 我想問的是RNOK(data)有一個return value 但使用上不是 A=RNOK(data) 用A去接回傳的value 那程式回傳的value是由哪個變數去接收? 而不是想去得到回傳值

08/02 20:22, , 2F
還有 #define 寫的函數 嚴格上來說不是函數
08/02 20:22, 2F

08/02 20:23, , 3F
你可以試試 用#define寫個內容為return 0;的函式
08/02 20:23, 3F

08/02 20:24, , 4F
你會發現 如果用在 main 下的話 程式會直接結束
08/02 20:24, 4F

08/02 20:25, , 5F
他的回傳是對呼叫RONK的函數用return
08/02 20:25, 5F

08/02 20:26, , 6F
假如在test函數裡用RONK 那回傳值是由test函數回傳
08/02 20:26, 6F

08/02 20:27, , 7F
上面那段程式就當沒看到就好= =
08/02 20:27, 7F
這邊你的意思是我在main裡用RNOK他的return value是對映main 假設我在test()裡面用RNOK他的return value是對映test EX: #define RNOK(){return 3;} int test() { RNOK(); } main() { a=test(); 這時候a會等於3 } 是這樣嗎? ※ 編輯: evilkiss 來自: 140.124.43.172 (08/02 21:53) ※ 編輯: evilkiss 來自: 140.124.43.172 (08/02 21:55)

08/02 22:34, , 8F
恩恩
08/02 22:34, 8F

08/03 13:27, , 9F
3Q
08/03 13:27, 9F
文章代碼(AID): #1ATMvL-3 (C_and_CPP)