大部分函式的引數都是用於輸入
但,也存在用於輸出
比如說:
bool addfun(int nitem, int &nret);
像第二個引數 nret是可以用於輸出,當然也可以做輸入
由於c語言限制,c語言裡要這樣寫:
bool addfun(int nitem, int *nret);
寫法不一樣,功能是一樣的。
這裡會存在問題的,而且是致命的,所以使用的時候要注意!
例如:函式
bool addfun(int32_t dwid, int32_t *dwnameid)
*dwnameid = 8; //隨便舉個例子,就是說這個引數被改變了(重新賦值)
實際呼叫的地方:
static int16_t wtestflag = 34;
static int16_t wnameid = 0;
addfun(123456, &wnameid);
補充 int16_t 表示2位元組的整形,int32_t 表示4位元組的整形
不知道有沒有發現問題?
是的,這樣寫編譯沒有問題,結果也未必會有錯誤的影響。
注意:輸入源:wnameid 是乙個 2位元組整形,addfun 的引數是4位元組的,
如果呼叫 addfun,那麼 會從 &wnameid 位址開始 連續 取4個位元組
而addfun 會對這個位址進行賦值操作,這樣原先2位元組的前面兩個位元組會因為重新賦值而變成0,
這樣就會出現奇怪的問題,臨近的變數 莫名的被改掉,很危險。
所以,如果作為輸出用的引數,就不要強制轉換了,當然也包括各種結構體,類等引數
禁用WordPress致命錯誤(WSOD)處理
下面由wordpress教程欄目給大家介紹如何禁用wordpress致命錯誤 wsod 處理,希望對需要的朋友有所幫助!wordpress 5.2內建了乙個新功能,當檢測到外掛程式或主題發生錯誤時,自動傳送郵件通知 管理員,即使在後端完全無法訪問的情況下 例如發生所謂的 白屏宕機 管理員仍然有機會登...
Web應用架構 錯誤統一處理, 和事務統一處理
因為前期,重點放在業務分析上,這兩塊一直認真思考過,覺得很簡單.一開始只是找了乙個nhibernate的示例,就決定把session的open和close和事務 transaction 的commit,放在httpmodule中處理.算是session per request的模式.之後,繼續加入錯...
Web應用架構 錯誤統一處理, 和事務統一處理
因為前期,重點放在業務分析上,這兩塊一直認真思考過,覺得很簡單.一開始只是找了乙個nhibernate的示例,就決定把session的open和close和事務 transaction 的commit,放在httpmodule中處理.算是session per request的模式.之後,繼續加入錯...