實際編程中宏濫用的陷阱
宏和預處理器在C 編程中發揮著重要作用,提供了以下能力定義文本替換並執行程式碼生成。然而,它們的過度使用可能會導致許多挑戰,正如一個現實世界的例子所證明的那樣,它體現了最嚴重的宏濫用。
考慮這樣一個場景:程式設計師由於對位元組優化的不懈追求而受到驅動以前在內存受限系統方面的經驗,採用了非常規的方法。此人定義了一個名為RETURN 的宏,如下所示:
#define RETURN(result) return (result);}
然後使用該宏定義多個沒有右大括號的函數,從而產生程式碼庫看起來像這樣:
int myfunction1(args) { int x = 0; // do something RETURN(x) int myfunction2(args) { int y = 0; // do something RETURN(y) int myfunction3(args) { int z = 0; // do something RETURN(z) }
這種極端的宏濫用嚴重損害了語法突出顯示,導致無法在視覺上區分函數和程式碼區塊。程式設計師對這種方法的理由源於在使用彙編語言時磨練出來的根深蒂固的思維方式,其中位元組保護至關重要。
與此人相關的其他怪癖進一步凸顯了極端程式設計實踐的潛在後果。監視器上方策略性地放置了一面凸面鏡,作為偵測旁觀者存在的基本監視系統。此外,每當編譯器偵測到程式碼中的錯誤時,突然從椅子上退出,然後快速做一組俯臥撐,就被用作一種自我懲罰形式。
這個例子是一個關於過度運動的危險的警示故事。宏觀濫用。雖然巨集可以在特定場景中提供某些優勢,但不加區別地使用它們可能會導致程式碼庫難以閱讀、維護和偵錯。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3