不同的程式執行平台所支援的資料型別會有少許區別,採用typedef方便跨平台移植
例如:平台 a 64位資料型別為long double ,而平台 b 64位資料型別為long double,
若想程式執行於平台a,則在程式之前申明 typedef long double real
若想移植到平台b,則只需更改 typedef double real
例如有乙個複雜的定義:void (*b[10])(void (*)(int,int));
為了方便,先把陣列符號「」去掉,那麼剩下:void (*b)(void (*)(int,int));
右側的void (*)(int,int)是乙個指標型別,於是先為這個指標型別定義乙個別名:typedef void(*pfunparam)();
於是初始定義變成了:void (*b)(pfunparam);
可知,b是乙個無返回值,引數型別為pfunparam的函式指標,再使用別名:typedef void (*pfunx)(pfunparam);
於是原來的申明語句就可以表示成:pfunx b[10];
後記:typedef好適合用來給別人挖坑哦:d
巨集一定要用大寫
被乙個巨集折騰了2次,才偶然發現問題。問題挺隱蔽的,也許是自己對bug出現後的表現,還不太敏感。以前認為巨集需要大寫,可能就是看著舒服,維護方便。經過這個bug後,增加了體會。巨集大寫可以降低除錯的難度,提高 的清晰度。最近維護的linux工程,為了出win版。中不可避免的用巨集隔開,或定義了一些在...
一定要用遞迴嗎?!
2017 02 14 今天看資料結構的時候,自己考慮了一下,如何用程式來實現這個函式。結果我的想法是利用迴圈的方式,而書上使用的方式是利用遞迴,所以就查了查這部分的內容,對比了下迴圈和遞迴的優缺點。首先,最重要的一點,就是這段函式的 盡量不使用遞迴。但是有時候,可能不使用遞迴,就會導致 量急劇上公升...
一定要用的 requestBody註解
後端接受前端傳遞的引數相信我們都用過 httpservletrequest的getparameter方法,但是在獲取資料方面都是key,value的方式,像十幾個傳遞的引數可能要在後台寫很多get,set方法來獲取或儲存獲取到的資料,就像這樣 而我們將資料定義在訊息體內,通過requestbody的...