乙個關於巨集使用慘痛的教訓

2022-05-20 23:05:15 字數 457 閱讀 6783

rt,乙個憨批錯誤

我,作為乙個巨集使用狂熱愛好者,max()函式當然用巨集定義

#define max(a,b) ((a)>(b)?(a):(b))
於是,我在這道樹剖題中大量使用了此巨集,比如下面:

ans=max(ans, query(1, idx[topf[a]], idx[a]));
if(l<=mid) ans=max(ans, query(sl, l, r));
於是因為巨集定義的複製,你的一次query(sl, l, r)操作變成了兩次,然後……然後就t爆了8個點

一下午一直都在試圖找線段樹、樹剖的鍋

又想起了上次ans=max(ans, ++mp[t])也是這樣的鍋

所以,遠離巨集定義

2021 2 5 關於new的乙個教訓

千萬不要在類建構函式的初始化裡new任何東西,這會導致析構函式delete乙個野指標!建構函式一定要把所有的指標初始化為nullptr!以下 會報錯 堆記憶體崩潰 integer integer long long n buffer default buffer length 0 num new i...

oozie下使用hive UDF的慘痛教訓

問題現象 oozie中跑的乙個workflow,hql指令碼的匯出結果和預期不一致,出錯。漫長的dubug之路 1.首先想到的是通過在hue中來跑同乙個hql指令碼,查詢問題。通過在oozie的log中找到解析完的hql,跑了下,結果發現和預期一致,頭有點兒大。2.經過分析hql,推測可能是和指令碼...

關於編譯環境和DLL的慘痛教訓

從昨天開始就被一堆古怪的問題困擾,一直把時間消耗在這上面,耽誤了一天半的工作日啊。慘痛,明天就要遞交了,正經的工作還沒有做。嗚嗚 不過也不是一無所獲,兩個教訓 1.環境目錄的設定應該按照由低階向高階的順序。同時,更改環境路徑之後,最好將相關的工程全部重新編譯。帶來的問題乙個是編譯時,可能會有定義的衝...