關於巨集返回值的問題

2021-08-09 15:31:28 字數 798 閱讀 3016

如果想對於基本函式進行一次封裝比如說我呼叫基本函式fseek的時候錯誤的時候想要輸出一句日誌,每次都來一次下面的判斷還是比較崩潰的.

if (fseek(...) != 0)

所以對於這種基本系統呼叫進行乙個封裝是比較好的乙個思路, 第乙個想到的就是下面這種思路,但是可以看到多少還是有點彆扭

int fseek(file *stream, long offset, int whence);

#define fseek(stream, offset, whence, ret) \

do while(0)

int main()

...}

最後看到另外乙個巨集定義

#define fopen(path, mode) ( \

ret; \

})int main(int argc, char** argv)

}

其實上面的函式可以通過巨集展開看下具體展開後 gcc -e test.cpp

int main(int argc, char** argv)

ret; }) ==

((void *)0)

)}

整理後如下

int main(int argc, char** argv)

ret; }) == ((void *)0)

)}

關於this emit的返回值的問題

最近在做專案時發現想要通過this.emit自定義的事件中,將事件中的資料返回出來,發現返回的是永遠是當前的例項物件。如 getpringrowdata getselrowdata 子元件中 directprint 直接列印函式 let printrowdata this emit getpring...

關於處理JDBC返回值問題

此時可以使用resultset類的get方法,如獲取字串型別則getstring 獲取int型則getint 括號之中的引數為要查詢欄位在資料庫中的列名。resultset resultset stat.executequery sql if resultset.next 除此之外,也可以採用自定義...

關於CString IsEmpty 的返回值

明顯是你的cstring當字串陣列用來當引數傳遞進去後返回了。這個例子很容易重現。找個winapi函式,這個函式必須是傳遞buf進去,然後用cstring作為引數傳遞進去。然後檢視cstring的長度。舉例如下 c c code 方式一 cstring szfilename getmodulefil...