簡體   English   中英

強制 {} 縮進並在自己的行上

[英]Forcing { } to indent and be on their own line

由於我無法控制的原因,我必須使用 C 編碼風格來處理{}

    if (lisa())
        {
        while (mary())
            {
            john();
            anna();
            }
        }
    else if (bart())
        {
        do
            {
            jack();
            }
        while (paul());
        }

那是

  1. 塊中正常代碼的左側與其打開和關閉{}對齊(我在任何標准樣式中都沒有發現這一點)。
  2. {}分隔代碼塊是一行中的單個非空白字符(可能不包括注釋)
  3. (如果支持):即使 C 使它們可選,顯式{}也會在for (…)dowhile (…)不匹配較早的doif (…)else之后強制執行,除非緊接着是if .

我應該在我的最小.clang-format文件中添加/更改哪些廣泛支持的屬性以獲得此行為?

---
BasedOnStyle: Microsoft
ColumnLimit: '120'
TabWidth: '4'
UseTab: Never

...

我嘗試創建自定義行為,即BreakBeforeBraces: Custom以滿足您的需求,但我非常有信心使用 clang-format-14 無法實現(根據我一直在使用的文檔,也無法使用 clang-format-16像查找表一樣使用)。

如果它設置為使用: BreakBeforeBraces: Whitesmiths代碼看起來幾乎與 Kamil 在評論中所寫的您的需求相同,但在 do-while 中不在新行中。

如果它設置為使用: BreakBeforeBraces: GNU while 出現在一個新行但是還有很多其他問題。 例如,代碼沒有與大括號水平對齊。

似乎最接近的是在.clang-format文件中使用這些選項:

Language: Cpp
BreakBeforeBraces: Whitesmiths
IndentWidth: 4
UseTab: Never

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM