低階錯誤 巨集定義大資料

2021-06-18 08:58:49 字數 428 閱讀 7411

今天在分塊讀取檔案內容時,犯了乙個低階錯誤

本來是想把塊的大小定義成4m,然後想當然的寫成:

#define sectionsize 4*1024*1024

結果可想而知。。。

在求某檔案塊的數量時,需要用到此資料

然後long leftsize = filesize % sectionsize;

long sectioncount = filesize / sectionsize + leftsize>0?1:0;

悲劇發生了。。。

這個leftszie得到的結果顯然不是我們想要的資料,變成了

long leftsize = filesize % 4*1024*1024;

以後一定要記得定義這樣的巨集的時候加括號

#define sectionsize (4*1024*1024)

巨集定義的巨集展開錯誤

巨集定義自身的缺陷是指巨集展開錯誤,主要是由於運算子優先順序等原因,使得巨集展開後的語義與餘項發生偏差。define max a,b a b?a b define mul a,b a b int main int x 4.y 3 int max max x,y 2 int product mul x...

jtabel新增資料時犯的低階錯誤

jtable新增資料,老是新增的不對,如下圖 最後發現時讀取的資料拆分不正確,是特殊字元,不能作為regx拆分string,所以split 不起作用 還有變數的作用域也很特別,如下 while str bfr.readline null vector rowdata new vector syste...

列印錯誤資訊的巨集定義

ifndef errmacros h define errmacros h include ifdef debug define debug print do while 0 else define debug print void 0 endif define error handler err ...