看板 C_and_CPP 關於我們 聯絡資訊
#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
danny8376:改成 08/02 20:11
#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是由哪個變數去接收? 而不是想去得到回傳值
danny8376:還有 #define 寫的函數 嚴格上來說不是函數 08/02 20:22
danny8376:你可以試試 用#define寫個內容為return 0;的函式 08/02 20:23
danny8376:你會發現 如果用在 main 下的話 程式會直接結束 08/02 20:24
danny8376:他的回傳是對呼叫RONK的函數用return 08/02 20:25
danny8376:假如在test函數裡用RONK 那回傳值是由test函數回傳 08/02 20:26
danny8376:上面那段程式就當沒看到就好= = 08/02 20:27
這邊你的意思是我在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)
danny8376:恩恩 08/02 22:34
evilkiss:3Q 08/03 13:27