c 核心指南 導論

2021-10-09 23:49:18 字數 1432 閱讀 1989

這是一套現代c++(目前是c++17)的核心指南,考慮了未來可能的增強和國際標準化組織技術規範(tss)。

目的是幫助c++程式設計師編寫更簡單、更高效、更易維護的**。

導論摘要:

所有c++程式設計師。這包括可能會考慮c的程式設計師。

本文的目的是幫助開發人員採用現代c++(目前是c++17),並實現更統一的跨**庫風格。

我們不會妄想這些規則中的每一條都可以有效地應用於每個**庫. 公升級舊系統很難. 然而,我們確信,使用規則的程式比不使用規則的程式更不容易出錯,也更容易維護。 通常,規則會使開發的初始階段更快、更容易。

就我們所知,這些規則使**的效能與採用舊的、更傳統的技術的**一樣好或更好;這些規則會遵循零開銷原則 (即"你無需為不用的東西付費" 或者說 「當您恰當地使用抽象機制時, 您至少可以獲得與使用低階語言結構手工編碼一樣好的效能」).

將這些規則的思想用於新**,同時在處理舊**時找機會利用它們,並盡可能接近這些思想。

remember:

花點時間去理解乙份指導原則對你的程式的影響。

這些指南是根據「超集子集」原則設計的 (stroustrup05).

他們並不是簡單地定義要使用的c++子集 ((可靠性、安全性、效能或其他).

而是, 強烈建議使用一些簡單的「擴充套件」,這些「擴充套件」使得c++最容易出錯的特性的使用變得多餘,從而可以被禁止(在我們的規則集中)。

這些規則以靜態型別安全和資源安全為重點.

因此,它們強調範圍檢查、避免對「nullptr」解引用、避免懸空指標以及系統地使用異常(通過raii)的可能性。

為了實現這一點,同時也為了最大限度地減少作為錯誤**的晦澀**,規則還強調簡單性,以及在明確指定的介面後面隱藏必要的複雜性。

許多規則是規定性的。(many of the rules are prescriptive.)

我們對簡單地說「不要那樣做」而又沒有提供替代方案的規則感到不安。

這樣做的乙個後果是,一些規則只能由啟發式檢查來支援,而不是精確的和機械的可驗證的檢查來支援。

其他規則闡明了一般原則. 越是通用的規則,就越是有更加詳細和特定的規則提供部分檢查。

這些指導方針致力於c++的核心及其使用。

我們預計,大多數大型組織、特定應用領域,甚至大型專案都需要進一步的規則,可能還需要進一步的限制,以及進一步的庫支援。

例如,硬實時程式設計師通常不能自由使用自由儲存(動態記憶體),並且在選擇庫時會受到限制。

我們鼓勵制定更具體的規則,作為這些核心規則的補充。

構建您理想的小型基礎庫並使用它,而不是將您的程式設計水平降低到貌似優美的彙編**。

這些規則旨在允許[逐步採用](# s-現代化)。

一些規則旨在增加各種形式的安全,而其他規則旨在減少事故的可能性,還有很多是兼顧兩者的。旨在防止事故的規則通常會禁止完全合法的c++。然而,當有兩種方式表達乙個想法時,其中一種方式被證明是乙個常見的錯誤**,而另一種方式不是,我們會試圖引導程式設計師使用後者。

Linux核心project導論 前言

想要研究linux核心。使用linux核心,首先要知道linux核心能做到什麼,提供了什麼。我看過非常多剛開始學習的人一進入公司就開始使用linux核心開發核心模組。使用的不管是通訊方式 記憶體介面還是裝置介面仍都是核心早已淘汰掉的。原因是他們一般是直接在網路上搜尋來怎樣完畢工作的。但他們手中的卻是...

核心開發指南 如何為核心打補丁

場景1 現在我的 usr src liunx 2.6.22.9 中存放了核心的源 我到了www.kernel.org上,看到最新的stable版本是 2.6.23.11。那麼我如何公升級呢?首先,2.6.x.x這類版本號叫stable版。是經過測試證明穩定的。一般使用者只都是用這個版本。其他還有rc...

MAC核心程式設計指南 同步原語

我在之前的blog中簡單的提了提mac的三種鎖,今天在這著重說說mutexes的使用,也只有這方面我有點經驗。先貼例子,再解釋 lck grp attr t tz slock grp attr lck grp t tz slock grp lck attr t tz slock attr lck m...