跨平台的時候,一定要用typedef定義資料型別

2021-10-02 06:09:43 字數 579 閱讀 5908

不同的程式執行平台所支援的資料型別會有少許區別,採用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的...