Python3获取本机MAC/IP

首先是获取MAC地址:

import uuid
def get_mac_address(): 
    mac = uuid.UUID(int = uuid.getnode()).hex[-12:] 
    return ":".join([mac[e:e+2] for e in range(0,11,2)])

然后是获取公网IP:

import socket
s = socket.create_connection(('ns1.dnspod.net', 6666))
print(s.recv(16))
s.close()

接着是获取内网IP的一个错误示例:

import socket
name = socket.getfqdn(socket.gethostname()) #获取本机host名
ip = socket.gethostbyname(name) #获取本机ip
print name
print ip

如果你的电脑上有多个实体网卡/虚拟网卡,那么这样子做很有可能只能获取到其中一个的IP.
如果你要获取所有的内网IP:

import socket
IPs = socket.gethostbyname_ex(socket.gethostname())[-1]
print(IPs)

如果你要获取你正在上网时所使用的内网IP:

import os
IP = [a for a in os.popen('route print').readlines() if ' 0.0.0.0 ' in a][0].split()[-2]
print IP

这里利用了路由(route)

AStyle中文文档

适用于C,C ++,C ++ / CLI,Objective-C,C#和Java源代码的 免费,快速和小型自动格式化程序

内容

一般信息

快速开始

用法

选项

选项文件

禁用格式化

基本支撑样式

支撑样式选项

默认大括号样式 = allman style = java style = kr style = stroustrup style = whitesmith style = vtk style = ratliff style = gnu style = linux style = horstmann style = 1tbs style = google style = mozilla style = pico style = lisp

标签选项

default indent indent = spaces indent = tab indent = force-tab –indent = force-tab-x

大括号修改选项

attach-namespaces attach-classes attach-inlines attach-extern-c attach-closing-while

缩进选项

indent-classes indent-modifiers indent-switches indent-cases indent-namespaces indent-after-parens indent-continuation indent-labels indent-preproc-block indent-preproc-define indent-preproc-cond indent-col1-comments min-conditional-缩进 max-continuation-indent

填充选项

break-blocks break-blocks =所有 pad-oper pad-comma pad-paren pad-paren-out pad-first-paren-out pad-paren-in pad-header unpad-paren delete-empty-lines fill-empty-lines align-pointer align-reference

格式化选项

break-closing-braces break-elseifs break-one-line-headers add-braces add-one-line-braces remove-braces break-return-type attach-return-type keep-one-line-blocks keep-one-line -statements convert-tabs close-templates remove-comment-prefix max-code-length break-after-logical mode

Objective-C选项

pad-method-prefix unpad-method-prefix pad-return-type unpad-return-type pad-param-type unpad-param-type align-method-colon pad-method-colon

其他选择

suffix suffix = none recursive dry-run exclude ignore-exclude-errors ignore-exclude-errors-x errors-to-stdout preserve-date verbose formatted quiet lineend

仅限命令行

options 项目 ascii 版本 帮助 html html = stdin = stdout =


一般信息

线路结尾

格式化文件中的行结尾将与输入文件相同。如果存在混合行结尾,则将使用最常见的结果。还可以选择指定或更改行结尾。

文件类型

Artistic Style将从文件扩展名中确定文件类型。扩展名“.java”表示Java文件,“。cc”表示C#文件。其他所有内容都是C类型文件(C,C ++,C ++ / CLI或Objective-C)。如果您使用Java或C#的非标准文件扩展名,请使用–mode =选项之一。

通配符和递归

Artistic Style可以递归地处理目录。通配符(例如“* .cpp”或“* .c ??”)在内部处理。如果使用shell,它应该将通配符传递给Artistic Style而不是先解析它们。对于Linux,请在文件名包含通配符的路径周围使用双引号。对于Windows,在文件名包含空格的路径周围使用双引号。“ 其他选项”部分中的递归选项 包含有关递归处理的信息。

文件名

格式化文件时,新缩进的文件将保留原始文件名。创建原始文件的副本,并在原始文件名后附加.orig。(这可以通过选项–suffix =设置为不同的字符串,或者通过选项-n或–suffix = none完全禁止)。因此,在缩进SourceFile.cpp之后,缩进文件将命名为SourceFile.cpp,而原始预缩缩文件将重命名为 SourceFile.cpp.orig

国际化

Artistic Style已经国际化,可以处理任何语言的文件和目录。

它也被翻译成几种语言。要使用的转换由Windows用户区域设置和其他系统的LANG环境变量确定。翻译将从这些设置自动完成。如果没有可用的翻译,则默认为英语。有一个“ascii”选项可以使用英语而不是系统语言。

翻译的源代码以英语翻译对的形式出现在ASLocalizer.cpp的末尾。如果您对翻译进行了更正,请将源作为错误报告发送,并将其包含在下一个版本中。

要添加新语言,请向ASLocalizer.h添加新的转换类。将英语 – 翻译对添加到ASLocalizer.cpp中的构造函数。更新WinLangCode数组并将语言代码添加到函数setTranslationClass()。ASLocalizer.cpp程序包含用于获取LCID和语言代码的网页的注释。将源代码作为错误报告发送,它将包含在下一个版本中。

其他考虑因素

编程中使用的特殊字符的名称因地区而异。Artistic Style使用的术语,后跟其他常用名称,是

大括号或花括号{} – 也称为括号或大括号。
parens或圆括号() – 也称为括号,括号,圆括号或软括号。
方括号[] – 也称为块状括号,括号,闭合括号或硬括号。
尖括号<> – 也称为括号,尖括号,三角括号,菱形括号,元组或V形符号。

Visual Studio以及可能的其他开发环境具有扩展,可以将赋值运算符与多行对齐。有一个名为“代码对齐”的扩展名,它也会将代码与其他项目对齐。使用这些选项和扩展名进行格式化可以与Artistic Style一起使用。将保持空间填充并保持对齐。

Artistic Style可以格式化标准类库语句,例如Open GL,wxWidgets,Qt和MFC。

嵌入式汇编语言格式正确。这包括扩展程序集和Microsoft特定的汇编程序行和块。

Artistic Style可以格式化嵌入式SQL语句。只要使用标准的悬挂缩进格式,就会保留SQL格式。如果“exec sql”语句缩进多于以下语句,则SQL将在单个列中对齐。

编码为UTF-16的Unicode文件(大端和小端)将被格式化。文件必须以要识别的字节顺序标记(BOM)开头。编码为UTF-32的文件将被拒绝。有些编译器不支持这些编码。可以使用程序“iconv”将这些文件转换为UTF-8编码。有Linux和Windows版本可用(Windows版本似乎不适用于所有编码)。Visual Studio可以从“文件>高级保存选项”菜单转换文件。还有其他开发环境和文本编辑器,如SciTE,可以将文件转换为UTF-8。

多行并且不是C类格式的嵌入式语句(例如Python)通常是错误格式的(C类型格式具有用括号括起来的块和用分号终止的语句)。定义函数的宏可能会导致以下代码格式错误,因为宏缺少定义中的大括号和分号。如果您有包含这些类型语句的源代码,请使用“ 其他选项” 部分中描述的exclude = ####选项将其 排除


快速开始

如果您从未使用过艺术风格,可以通过以下几种方式开始使用。

一种是根本没有选项来运行它。这将使用默认大括号样式,每个缩进4个空格,并且不进行格式更改。这将打破一个行块的大括号,并将打破一行语句。要更改此设置,请使用“ 格式化选项”部分中描述的 keep-one-line-blocks 和/或keep-one-line-statements 选项

另一种方法是使用“ 支撑样式选项”部分中描述的支撑样式之一。选择一个你喜欢的大括号格式样式。如果未设置缩进选项,则将使用默认选项4个空格。如上所述,这些选项还会破坏一个行块和一个行语句。

第三种选择是使用“file”文件夹中的选项文件。如果存在要复制的编码样式,请输入相应的选项文件。使用选项 options = ####指定要使用的文件。它必须包含文件的路径,包括文件名。

熟悉选项后,您可以根据个人喜好自定义格式。


用法

命令行

艺术风格是一种从命令行接收信息的控制台程序。

命令行格式:

astyle [OPTIONS]   SourceFilePath1 SourceFilePath2 SourceFilePath3 [。。。]

方括号[]表示可以输入多个选项或多个文件名。它们实际上并未包含在命令中。有关选项格式,请参阅以下“选项”部分。

格式化单个文件的示例:

astyle --style = allman /home/project/foo.cpp

递归格式化C#文件的示例:

astyle --style = allman --recursive /home/project/*.cs

文件扩展名

如果用逗号或分号分隔,则可以使用多个文件扩展名。如果整个文件路径用双引号括起来,则可以跟随可选空格。使用的扩展数量没有限制。

使用多个文件扩展名递归格式化C ++文件的示例:

astyle --style = allman --recursive /home/project/*.cpp,*.h

重定向

<和>字符可用于将文件重定向到标准输入(stdin)和标准输出(stdout)之外 – 不要忘记它们!使用此选项,一次只能格式化一个文件。无法识别通配符,没有控制台消息,并且未创建备份。在Windows上,输出将始终具有Windows行结束。可以使用选项“stdin =”和“stdout =”代替重定向。

用于格式化单个文件并更改名称的重定向选项示例:

astyle --style = allman < OriginalSourceFile > BeautifiedSourceFile

使用“stdin =”和“stdout =”重定向以格式化单个文件并更改名称的示例:

astyle --style = allman --stdin = OriginalSourceFile --stdout = BeautifiedSourceFile

重定向选项可用于显示格式化文件而不更新:

astyle --style = allman < OriginalSourceFile | 减


选项

不指定任何选项将导致默认大括号样式,每个缩进4个空格,并且不会更改格式。

该程序遵循通常的GNU命令行语法。选项可以用两种不同的方式编写。

长期选择

这些选项以“ ” 开头,必须一次写入一个。
(例如:’ – style = allman –indent = spaces = 4’)

短期权

这些选项以单个“ ” 开头,可以连接在一起。
(例如:’-bps4’与写’-b -p -s4’相同。)


选项文件

可选的默认选项文件和/或项目选项文件可用于补充或替换命令行选项。他们可能使用计算机的标准编码,UTF-8或UTF-16 unicode编码。

可以通过换行符,制表符,逗号或空格分隔选项。选项文件中的长选项可以在没有前面的“ – ”的情况下编写。选项文件中以“#”开头的行被视为行注释。可以使用–verbose选项显示格式化中使用的选项文件及其位置。

  1. 命令行选项具有优先权。如果命令行选项与默认或项目文件中的选项之间存在冲突,则将使用命令行选项。
  2. 项目选项文件拥有默认的选项文件而不是命令行选项优先。项目选项文件应位于正在格式化的项目的顶级目录中。该文件仅由文件名标识。必须使用其中一个命令行项目选项来指示文件可用,或者必须由环境变量引用它。Artistic Style按以下顺序在当前目录或其父目录中查找文件。
    • –project =命令行选项指示的文件名。
    • 名为.astylerc或_ astylerc的文件。
    • 由环境变量ARTISTIC_STYLE_PROJECT_OPTIONS标识的文件名(如果存在)。
    • 可以通过在命令行上指定–project = none来禁用文件或环境变量。

    该文件应位于正在格式化的项目的顶级目录中。每次执行只使用一个文件,并且假定要格式化的所有文件都在同一个项目中。Artistic Style将在目录路径中向后搜索以查找项目选项文件。搜索的初始目录路径按以下顺序从以下位置之一获取。

    • 在命令行上输入的第一个SourceFilePath
    • “–stdin =”的值,如果它用于重定向。
    • 当前目录如果“<”用于重新获取。如果要格式化的文件不在当前目录中,请改用“–stdin =”选项。
  3. 默认选项文件可用于所有项目。该文件由文件路径和文件名标识。必须使用其中一个命令行选项来指示文件可用,或者必须由环境变量引用它。Artistic Style按以下顺序查找文件路径和文件名。
    • –options =命令行选项指示的文件路径。
    • 环境变量ARTISTIC_STYLE_OPTIONS指示的文件路径(如果存在)。
    • HOME环境变量指向的目录中名为.astylerc的文件(例如Linux上的“$ HOME / .astylerc”);
    • APPDATA环境变量指向的目录中名为astylerc的文件(例如Windows上的“%APPDATA%\ astylerc”)。
    • 可以通过在命令行上指定–options = none来禁用文件或环境变量。

默认或项目选项文件的示例:

_#这行是注释_ 
--style = allman _#这是一个行尾_
_注释_ #long _options可以写成没有前面的' - '_ 
缩进 - 开关      _#不能在命令行上执行此操作_
 #short       _options必须具有前面的' - '_
-t -p

#short _options可以连接在一起_ -M60Ucv


禁用格式化

可以使用在源代码中插入的注释标记禁用格式化和缩进。

禁用阻止

可以使用“off”和“on”标签禁用代码块。标记作为注释包含在源文件中。注释可以是C注释(/ * … * /)或C ++行注释(//)。标记必须包含在单行注释中。如果注释超过一行,则将忽略缩进标记。标签中可以包含附加信息。

开始标记为“* INDENT-OFF *”,结束标记为“* INDENT-ON *”。它们可以在程序中的任何地方使用,条件是在标记之间部分禁用解析。禁用部分语句可能会导致结束标记后格式不正确。如果发生这种情况,请展开标记以包含其他代码。

以下内容保留了预处理器定义的格式:

_// * INDENT-OFF *_
#define FOO_DECLARE_int32_(姓名)\
        FOO_API_ extern :: Int32 FOO_FLAG(姓名)
_// * INDENT-ON *_

禁用线

艺术风格并不总能确定具有多种含义的符号的用法。例如,星号(*)可以是乘法,指针或指针取消引用。“&”和“&&”符号是类似的问题。

如果符号填充不正确,手动填充可能会解决问题。如果它仍然填充不正确,则可能需要禁用格式化。为避免必须使用上面的“禁用块”标记,可以使用单行禁用。

行尾注释标记“* NOPAD *”将禁用“pad-oper”,“align-pointer”和“align-reference”选项。解析不会停止,所有其他格式将应用于该行。标签仅适用于一行。

以下内容可防止运算符填充更改:

size_t foo =(unsigned int)-1;  _// * NOPAD *_


基本支撑样式

有三种基本的支撑样式。
附加 – 大括号附加到前一个块的最后一行的末尾。(JAVA)。
破碎 – 大括号从前一个区块中断开。(奥曼)。
Linux – 除了函数,类或命名空间(K&R,Linux)的左括号外,附加大括号。

其他支撑样式是这些的变体。有些人会使用类,命名空间或其他大括号的位置变体。(Stroustrup,Google,One True Brace,Lisp)。其他人会缩进大括号(Whitesmith,VTK,Banner和GNU)。其他人将使用磨合括号,其中以下陈述与括号(Horstmann和Pico)在同一行。

选择一种风格而不是另一种风格有技术论据。但通常的原因归结为个人偏好。有些像带有垂直空白的断括号,使代码易于阅读。其他像附加的括号,代码更紧凑。程序员有时只想要改变。如果您可以看到以特定大括号样式格式化的整个文件,则更容易选择首选项。使用Artistic Style,您可以轻松修改源代码以满足您的喜好。


支撑样式选项

“大括号样式”选项定义要使用的大括号样式。所有选项默认为每个缩进4个空格,用空格缩进。默认情况下,没有任何样式缩进名称空间。其他缩进在个别样式说明中指出。所有选项都会破坏一个行块的大括号,并会破坏一行语句。要更改此设置,请使用“ 格式化选项” 部分中描述的keep-one-line-blocks和/或 keep-one-line-statements 选项

default brace style
如果未请求大括号样式,则将使用默认大括号样式。开口支撑不会改变,关闭支撑将从前一行断开。这有一些例外。

--style=allman / --style=bsd / --style=break / -A1
Allman风格使用破碎的大括号。

int Foo(bool isBar)
 {
    if(isBar)
    {
        酒吧();
        返回1;
    }
    其他
        返回0;
}

--style=java / --style=attach / -A2
Java风格使用附加的大括号。

int Foo(bool isBar){ 
    if(isBar){
        酒吧();
        返回1;
    }其他
        返回0;
}

--style=kr / --style=k&r / --style=k/r / -A3
Kernighan&Ritchie风格使用linux支撑。从名称空间,类和函数定义中打开括号。大括号附加到其他所有内容,包括函数中的数组,结构,枚举和语句。

使用k&r选项可能会因为&而导致问题。这可以通过将k&r括在引号中来解决(例如–style =“k&r”)或使用其中一个替换项–style = kr或–style = k / r。

int Foo(bool isBar)
 { 
    if(isBar){
        酒吧();
        返回1;
    }其他
        返回0;
}

--style=stroustrup / -A4
Stroustrup样式使用linux大括号,关闭大括号(例如–break-closing-headers)。打开括号仅从函数定义中删除。开括号附加到其他所有内容,包括函数内的名称空间,类,数组,结构,枚举和语句。此样式通常与“attach-closing-while”,带标签的缩进和5个空格的缩进一起使用。

int Foo(bool isBar)
 { 
    if(isBar){
        酒吧();
        返回1;
    }
    其他
        返回0;
}

--style=whitesmith / -A5
Whitesmith风格使用破碎的缩进括号。切换块和类块是缩进的,以防止使用以下case语句和C ++类修饰符(public,private,protected)进行“悬挂缩进”。

int Foo(bool isBar)
     {
    if(isBar)
        {
        酒吧();
        返回1;
        }
    其他
        返回0;
    }

--style=vtk / -A15
VTK(可视化工具包)样式使用断开的缩进大括号,但类,数组,结构,枚举和函数定义的左大括号除外。切换块缩进以防止带有以下case语句的“悬挂缩进”。

int Foo(bool isBar)
 {
    if(isBar)
        {
        酒吧();
        返回1;
        }
    其他
        返回0;
}

--style=ratliff / --style=banner / -A6
Ratliff风格使用附加的缩进牙箍。切换块和类块缩进以防止具有以下case语句和C ++类修饰符(public,private,protected)的“悬挂缩进”。

int Foo(bool isBar){ 
    if(isBar){
        酒吧();
        返回1;
        }
    其他
        返回0;
    }

--style=gnu / -A7
GNU样式使用破碎的大括号。额外缩进仅添加到函数内的 。整个块是缩进的,而不仅仅是支撑。这种风格经常用于2个空格的缩进。

int Foo(bool isBar)
 {
    if(isBar)
        {
            酒吧();
            返回1;
        }
    其他
        返回0;
}

--style=linux / --style=knf / -A8
Linux风格使用linux大括号。从命名空间,类和函数定义中打开括号。大括号附加到其他所有内容,包括函数中的数组,结构,枚举和语句。的最低条件缩进是一半缩进。如果您想要一个不同的最小条件缩进,请改用K&R样式。这种风格最适合大缩进。它通常用于8个空格的缩进。

也称为Kernel Normal Form(KNF)样式,这是Linux BSD内核中使用的样式。

int Foo(bool isBar)
 { 
        if(isFoo){
                酒吧();
                返回1;
        }其他
                返回0;
}

--style=horstmann / --style=run-in / -A9
Horstmann风格使用断括号和磨合语句。缩进开关以允许打开开关块。这种风格经常用于3个空格的缩进。

int Foo(bool isBar)
 {    if(isBar)
     {    bar();
        返回1;
    }
    其他
        返回0;
}

--style=1tbs / --style=otbs / -A10
“One True Brace Style”使用linux大括号,并为无条件的一行条件语句添加大括号。从名称空间,类和函数定义中打开括号。大括号附加到其他所有内容,包括函数中的数组,结构,枚举和语句。

在以下示例中,大括号已添加到“return 0;” 声明。选项–add-one-line-braces也可以与此样式一起使用。

int Foo(bool isBar)
 { 
    if(isFoo){
        酒吧();
        返回1;
    } else {
        返回0;
    } 
}

--style=google / -A14
Google风格使用附加大括号和缩进类访问修饰符。有关缩进修改器格式的示例,请参见indent-modifiers选项。这实际上不是一种独特的支撑样式,而是具有非支撑变体的Java风格。这种风格经常用于2个空格的缩进。

int Foo(bool isBar){ 
    if(isBar){
        酒吧();
        返回1;
    }其他
        返回0;
}

--style=mozilla / -A16
Mozilla风格使用linux大括号。从类,结构,枚举和函数定义中打开括号。大括号附加到其他所有内容,包括函数内的命名空间,数组和语句。此样式通常与2个空格的缩进和–break-return-type一起使用。

int Foo(bool isBar)
 { 
    if(isBar){
        酒吧();
        返回1;
    }其他
        返回0;
}

--style=pico / -A11
Pico风格使用断开的括号和磨合语句以及附加的闭合括号。闭合支撑连接到块中的最后一行。缩进开关以允许打开开关块。该风格意味着保持一行块和保持一行语句。如果使用add-braces,它们将被添加为单行括号。这种风格经常用于2个空格的缩进。

int Foo(bool isBar)
 {    if(isBar)
     {    bar();
        返回1; }
    其他
        返回0; }

--style=lisp / --style=python / -A12
Lisp风格使用附加的开合括号。闭合支撑连接到块中的最后一行。样式意味着保持一行语句,但不是保持一行块。此样式不支持单行括号。如果使用add-one-line-braces,它们将被添加为多行括号。

int Foo(bool isBar){ 
    if(isBar){
         bar()
        返回1; }
     其他
        返回0; }


标签选项

以下示例显示了空白字符。空间用a表示(点),标签用>(大于)表示。

default indent
如果未设置缩进选项,则将使用4个空格的默认选项(例如-s 4 –indent = spaces = 4)。

默认值:

void Foo(){
.... if(isBar1
............ && isBar2)     _//可以使用min-conditional-indent更改此行的缩进_
........酒吧();
}

--indent=spaces / --indent=spaces=# / -s#
缩进使用#空间每缩进(例如-s 3 –indent =空格= 3)。#必须介于2和20之间。不指定#将导致每个缩进默认为4个空格。

with indent = spaces = 3

void Foo(){
...... if(isBar1
......... && isBar2)     _//可以使用min-conditional-indent更改此行的缩进_
......酒吧();
}

--indent=tab / --indent=tab=# / -t / -t#
缩进使用制表符进行缩进,并使用空格进行连续行对齐。无论观看者的标签大小如何,这都可确保正确显示代码。将每个缩进视为#spaces (例如-t 6 / –indent = tab = 6)。#必须介于2和20之间。如果未设置#,则将缩进视为4个空格。

with indent = tab:

void Foo(){
> if(isBar1
> ........ && isBar2)     _//可以使用min-conditional-indent更改此行的缩进_
>> bar();
}

with style = linux,indent = tab = 8:

void Foo()
 {
> if(isBar1
> .... && isBar2)     _//此行的缩进不能用style = linux更改_
>> bar();
}

--indent=force-tab / --indent=force-tab=# / -T / -T#
如果可能, 使用所有制符缩进。如果连续行不是偶数个制表符,则最后会添加空格。对待每个标签为#空间(例如-T 6 / –indent = 力-标签= 6)。#必须介于2和20之间。如果未设置#,则将制表符视为4个空格。

with indent = force-tab:

void Foo(){
> if(isBar1
>>> && isBar2)     _//可以使用min-conditional-indent更改此行的缩进_
>> bar();
}

--indent=force-tab-x / --indent=force-tab-x=# / -xT / -xT#
此强制选项卡选项允许将制表符长度设置为与缩进长度不同的长度。这可能导致缩进是制表符和空格的混合。如果可能,选项卡将用于缩进。如果无法使用制表符缩进,则将使用空格。

此选项设置选项卡长度。对待每个标签为#空间(例如-xT 6 / –indent = 力-制表X = 6。#必须在2和20之间。如果没有#被设置,把突出部8个作为空格。要改变缩进长度从默认值为4个空格,也必须使用“indent = force-tab”选项。

with indent = force-tab-x(默认制表符长度为8,默认缩进长度为4):

void Foo(){
.... if(isBar1
> .... && isBar2)     _//可以使用min-conditional-indent更改此行的缩进_
> bar();
}


大括号修改选项

--attach-namespaces / -xn
将大括号附加到命名空间语句。无论使用的支撑样式如何,都可以完成此操作。它还会将大括号附加到CORBA IDL模块语句。

大括号始终附加到命名空间语句:

namespace FooName {
...
}

--attach-classes / -xc
将大括号附加到类语句。无论使用的支撑样式如何,都可以完成此操作。

大括号始终附加到类声明:

class FooClass {
...
} ;

--attach-inlines / -xl
将大括号附加到类和结构内联函数定义。除Horstmann和Pico(磨合样式)外,此选项优先于所有样式。它仅对C ++文件有效。

所有大括号都附加到类和结构内联方法定义:

class FooClass
 { 
    void Foo(){
    ...
    } 
} ;

--attach-extern-c / -xk
将括号附加到支撑的extern“C”语句。无论使用的支撑样式如何,都可以完成此操作。此选项仅对C ++文件有效。

作为函数定义一部分的extern“C”语句根据请求的大括​​号样式进行格式化。括号extern“C”语句不受括号样式的影响,此选项是更改它们的唯一方法。

此选项将大括号附加到支持的extern“C”语句:

#ifdef __cplusplus
extern“C” {
#万一

但函数定义根据请求的大括​​号样式进行格式化:

extern“C”EXPORT void STDCALL Foo()
 {}

--attach-closing-while / -xV
将’do-while’语句的结束’while’附加到右大括号。这优先于大括号样式和break break大括号选项。

{
    酒吧();
    ++ X;
}
而x == 1;

变为:

{
    酒吧();
    ++ X;
} x == 1;


缩进选项

--indent-classes / -C
缩进’class’和’struct’块,以便整个块缩进。仅当在结构中的某处声明了访问修饰符’public:’,’protected:’或’private:’时,结构块才会缩进。此选项仅对C ++文件有效。

class Foo
 {
上市:
    FOO();
    virtual~Foo();
} ;

变为:

class Foo
 {
    上市:
        FOO();
        virtual~Foo();
} ;

--indent-modifiers / -xG
缩进’class’和’struct’访问修饰符,’public:’,’protected:’和’private:’,缩进一半。该类的其余部分没有缩进。此选项仅对C ++文件有效。如果与indent-classes一起使用,则会忽略此选项。

class Foo
 {
上市:
    FOO();
    virtual~Foo();
} ;

变为:

class Foo
 {
  上市:
    FOO();
    virtual~Foo();
} ;

--indent-switches / -S
缩进’switch’块,以便在开关块中缩进’case X:’语句。整个案例块是缩进的。

switch(foo)
 {
情况1:
    a + = 1;
    打破;

案例2:
{
    a + = 2;
    打破;
} 
}

变为:

switch(foo)
 {
    情况1:
        a + = 1;
        打破;

    案例2:
    {
        a + = 2;
        打破;
    } 
}

--indent-cases / -K
case X:从’ case X:‘标题中 缩进’ ‘块。未包含在块中的Case语句不缩进。

switch(foo)
 {
    情况1:
        a + = 1;
        打破;

    案例2:
    {
        a + = 2;
        打破;
    } 
}

变为:

switch(foo)
 {
    情况1:
        a + = 1;
        打破;

    案例2:
        {
            a + = 2;
            打破;
        } 
}

--indent-namespaces / -N
为命名空间块添加额外的缩进。此选项对Java文件没有影响。它还将缩进CORBA IDL模块语句。

namespace foospace
 {
Foo级
{
    上市:
        FOO();
        virtual~Foo();
} ;
}

变为:

namespace foospace
 {
    Foo级
    {
        上市:
            FOO();
            virtual~Foo();
    } ;
}

--indent-after-parens / -xU
缩进,而不是对齐,包含开头的行后面的连续行paren’(’或赋值’=’。这包括函数定义和声明以及返回语句。缩进可以使用以下缩进连续选项进行修改。对于显示比例字体的编辑器,可能首选选项。

void Foo(bool bar1,
         布尔酒吧2)
{
    isLongFunction(BAR1,
                   BAR2);

    isLongVariable = foo1
                     || foo2的;
}

变为:

void Foo(bool bar1,
    布尔酒吧2)
{
    isLongFunction(BAR1,
        BAR2);

    isLongVariable = foo1
        || foo2的;
}

--indent-continuation=# / -xt#
设置以开头paren’(’或赋值’=’结尾的行的continuation indent。这包括函数定义和声明。它还将修改先前的indent-after-paren选项。的值 表示一个数字凹痕。有效值是整数值从0-4。如果不使用这个选项,默认值1被使用。

isLongVariable =
    foo1 ||
    foo2的;

isLongFunction(
    BAR1,
    BAR2);

成为(使用indent-continuation = 3):

isLongVariable =
            foo1 ||
            foo2的;

isLongFunction(
            BAR1,
            BAR2);

--indent-labels / -L
为标签添加额外的缩进,使它们显示比当前缩进小1的缩进,而不是向左刷新(默认值)。

void Foo(){ 
    while(isFoo){
        if(isFoo)
            转到错误;
        ...
错误:
        ...
        } 
}

变为(缩进’错误:’):

void Foo(){ 
    while(isFoo){
        if(isFoo)
            转到错误;
        ...
    错误:
        ...
        } 
}

--indent-preproc-block / -xW
将括号级为零的预处理程序块缩进并立即在命名空间内。将缩进的内容有限制。方法,类,数组等中的块不会缩进。包含大括号或多行定义语句的块不会缩进。如果没有此选项,则预处理程序块不会缩进。

#ifdef _WIN32
#include <windows.h>
#ifndef NO_EXPORT
#define EXPORT
#万一
#万一

变为:

#ifdef _WIN32
    #include <windows.h>
    #ifndef NO_EXPORT
        #define EXPORT
    #万一
#万一

--indent-preproc-define / -w
缩进以反斜杠结尾的多行预处理器定义。应与–convert-tabs一起使用以获得正确的结果。做得很好,但不能在混淆的预处理器定义中执行奇迹。如果没有此选项,预处理程序语句将保持不变。

#define Is_Bar(arg,a,b)\
(Is_Foo((arg),(a))\
|| Is_Foo((arg),(b)))

变为:

#define Is_Bar(arg,a,b)\
    (Is_Foo((arg),(a))\
     || Is_Foo((arg),(b)))

--indent-preproc-cond / -xw
将预处理程序条件语句缩进到与源代码相同的级别。

        isFoo = true;
#ifdef UNICODE
        text = wideBuff;
#其他
        text = buff;
#万一

变为:

        isFoo = true;
        #ifdef UNICODE
        text = wideBuff;
        #其他
        text = buff;
        #万一

--indent-col1-comments / -Y
从第一列开始缩进C ++注释。默认情况下,从第一列开始的C ++注释被假定为注释掉的代码而不是缩进的。此选项将允许使用代码缩进注释。

void Foo()\ n“
 { 
_//评论_
    if(isFoo)
        酒吧();
}

变为:

void Foo()\ n“
 { 
    _//评论_
    if(isFoo)
        酒吧();
}

--min-conditional-indent=# / -m#
设置标题由多行构建时添加的最小缩进。此缩进有助于轻松地将标头与后面的命令语句分开。的值 表示缩进数量,并且是最小值。缩进可能更大,以与前一行上的数据对齐。
有效值为:
0 – 没有最小缩进。这些线将与前一行的paren对齐。
1 – 至少缩进一个缩进。
2 – 缩进至少两个额外的缩进。
3 – 缩进至少一半的额外缩进。这适用于大缩进(例如8)。
默认值为2,另外两个缩进。

_//默认设置使此非支撑代码清晰_
如果(a <b
        || c> d)
    FOO ++;

_//但是在这个支撑的代码中创建了一个夸张的缩进_
如果(a <b
        || c> d)
{
    FOO ++;
}

变成(设定时 ):--min-conditional-indent=0

_//设置使这个非支撑代码不太清晰_
如果(a <b
    || c> d)
    FOO ++;

_//但是这个支持的代码更清晰_
如果(a <b
    || c> d)
{
    FOO ++;
}

--max-continuation-indent=# / -M#
设置最大的缩进空格续行。的 表示的列数,并且必须不小于40或大于120。如果未设置任何值,则将使用默认值40。此选项将阻止延续线向右延伸太远。设置较大的值将允许代码进一步向右扩展。

fooArray [] = { red,
         绿色,
         蓝色} ;

fooFunction(barArg1,
         barArg2,
         barArg3);

变得(具有更大的价值):

fooArray [] = { red,
               绿色,
               蓝色} ;

fooFunction(barArg1,
            barArg2,
            barArg3);


填充选项

--break-blocks / -f
在标题栏周围填空线(例如’if’,’for’,’while’……)。

isFoo = true;
if(isFoo){
    酒吧();
} else {
    anotherBar();
}
isBar = false;

变为:

isFoo = true;

if(isFoo){
    酒吧();
} else {
    anotherBar();
}

isBar = false;

--break-blocks=all / -F
在标题栏周围填空线(例如’if’,’for’,’while’……)。将关闭标题块(例如’else’,’catch’)视为独立块。

isFoo = true;
if(isFoo){
    酒吧();
} else {
    anotherBar();
}
isBar = false;

变为:

isFoo = true;

if(isFoo){
    酒吧();

} else {
    anotherBar();
}

isBar = false;

--pad-oper / -p
在运算符周围插入空格填充。这也将填充逗号。如果可能,任何行尾注释将保留在原始列中。请注意,unpad没有选项。填充后,它们会保持衬垫状态。

if(foo == 2)
    α=杆((BC)*一,D--);

变为:

if(foo == 2)
    a = bar((b-c)* a,d--);

--pad-comma / -xg
逗号后插入空格填充。如果使用pad-oper,则不需要这样做。如果可能,任何行尾注释将保留在原始列中。请注意,unpad没有选项。填充后,它们会保持填充状态。

if(isFoo(a,b))
    巴(A,B);

变为:

if(isFoo(a,b))
    bar(a,b);

--pad-paren / -P
外侧内侧的 parens周围插入空间填充。如果可能,任何行尾注释将保留在原始列中。

if(isFoo((a + 2),b))
    bar(a,b);

变为:

if(isFoo((a + 2),b))
    bar(a,b);

--pad-paren-out / -d
仅 在外侧的 parens周围插入空间填充。空的Parens不会被填充。如果可能,任何行尾注释将保留在原始列中。这可以与下面的unpad-paren一起使用,以删除不需要的空格。

if(isFoo((a + 2),b))
    bar(a,b);

变为:

if(isFoo((a + 2),b))
    bar(a,b);

--pad-first-paren-out / -xd
仅在外侧第一个 paren 周围插入空间填充。空的Parens不会被填充。如果可能,任何行尾注释将保留在原始列中。这可以与下面的unpad-paren一起使用,以删除不需要的空格。如果与pad-paren或pad-paren-out一起使用,则此选项将被忽略。如果与pad-paren-in一起使用,结果将是pad-paren。

if(isFoo((a + 2),b))
    bar(a,b);

变为:

if(isFoo((a + 2),b))
    bar(a,b);

--pad-paren-in / -D
仅 在内侧的 paren周围插入空间填充。如果可能,任何行尾注释将保留在原始列中。这可以与下面的unpad-paren一起使用,以删除不需要的空格。

if(isFoo((a + 2),b))
    bar(a,b);

变为:

if(isFoo((a + 2),b))
    bar(a,b);

--pad-header / -H
在标题之间插入空格填充(例如’if’,’for’,’while’…)和以下paren。如果可能,任何行尾注释将保留在原始列中。这可以与unpad-paren一起使用以删除不需要的空格。

if(isFoo((a + 2),b))
    bar(a,b);

变为:

if(isFoo((a + 2),b))
    bar(a,b);

--unpad-paren / -U
去除内部和外部的parens周围的额外空间填充。如果可能,任何行尾注释将保留在原始列中。此选项可与上面的填充填充选项pad-paren,pad-paren-out,pad-paren-in和pad-header结合使用。仅删除其他选项未请求的填充。

例如,如果一个源在内部和外部都填充了填充,并且您只想在内部填充。您需要使用unpad-paren来移除外部填充,并使用pad-paren-in来保留内部填充。仅使用pad-paren-in>不会删除外部填充。

if(isFoo((a + 2),b))
    bar(a,b);

变为(没有请求填充选项):

if(isFoo((a + 2),b))
    bar(a,b);

--delete-empty-lines / -xe
删除函数或方法中的空行。不删除函数或方法之外的空行。如果与break-blocks或break-blocks一起使用= all它将删除所有行,除了break-blocks选项添加的行。

void Foo()
 {

    foo1 = 1;

    foo2 = 2;

}

变为:

void Foo()
 {
    foo1 = 1;
    foo2 = 2;
}

--fill-empty-lines / -E
用前一行的空白填充空行。

--align-pointer=type / -k1
--align-pointer=middle / -k2
--align-pointer=name / -k3

将指针或引用运算符(*,&或^)附加到变量类型(左)或变量名称(右),或将其放在类型和名称(中间)之间。如果可能,将保留类型和名称之间的间距。此选项适用于C / C ++,C ++ / CLI和C#文件。要单独格式化引用,请使用以下align-reference选项。

char * foo1;
char&foo2;
string ^ s1;

变为(使用align-pointer = type):

char * foo1;
char&foo2;
string ^ s1;
char * foo1;
char&foo2;
string ^ s1;

成为(使用align-pointer = middle):

char * foo1;
char&foo2;
string ^ s1;
char * foo1;
char&foo2;
string ^ s1;

变为(使用align-pointer = name):

char * foo1;
char&foo2;
string ^ s1;

--align-reference=none / -W0
--align-reference=type / -W1
--align-reference=middle / -W2
--align-reference=name / -W3

此选项将引用与指针分开。此选项不会更改指针。如果要将指针和引用对齐,请使用先前的align-pointer选项。选项align-reference = none不会更改参考对齐。其他选项与align-pointer相同。此选项适用于C / C ++,C ++ / CLI和C#文件。

char&foo1;

变为(使用align-reference = type):

char&foo1;
char&foo2;

变为(使用align-reference = middle):

char&foo2;
char&foo3;

变为(使用align-reference = name):

char&foo3;


格式化选项

--break-closing-braces / -y
当与–style = java, – style = kr, – style = stroustrup, – style = linux或–style = 1tbs一起使用时,会打破关闭标题(例如’else’,’catch’,.. 。)从他们紧接着的前面的括号中。关闭标题括号总是与其他样式分开。

void Foo(bool isFoo){ 
    if(isFoo){
        酒吧();
    } else {
        anotherBar();
    } 
}

成为(破碎的’其他’):

void Foo(bool isFoo){ 
    if(isFoo){
        酒吧();
    } 
    else {
        anotherBar();
    } 
}

--break-elseifs / -e
将“else if”标题组合分成单独的行。如果使用keep-one-line-statement,则此选项无效,“else if”语句将保持原样。

如果未使用此选项,则“else if”标题组合将放在一行中。

if(isFoo){
    酒吧();
} 
else if(isFoo1()){
    BAR1();
} 
else if(isFoo2()){
    BAR2;
}

变为:

if(isFoo){
    酒吧();
}
其他
    if(isFoo1()){
        BAR1();
    }
    其他
        if(isFoo2()){
            BAR2();
        }

--break-one-line-headers / -xb
从驻留在同一行的语句中断一行标题(例如’if’,’while’,’else’,…)。如果语句用大括号括起来,则大括号将根据请求的大括​​号样式进行格式化。

如果请求keep-one-line-statements,则不会破坏多语句行。如果请求keep-one-line-blocks并且标题包含在块中,则不会破坏一个行块。

void Foo(bool isFoo)
 {
    if(isFoo1)bar1();

    if(isFoo2){ bar2(); } 
}

变为:

void Foo(bool isFoo)
 {
    if(isFoo1)
        BAR1();

    if(isFoo2){
        BAR2();
    } 
}

--add-braces / -j
将大括号添加到无支撑的一行条件语句(例如’if’,’for’,’while’…)。声明必须在一行上。大括号将根据要求的支撑样式添加。如果没有要求样式,将附加大括号。

如果请求keep-one-line-statement,则不会将大括号添加到多语句行。如果请求keep-one-line-blocks,则不会将大括号添加到单行块中。如果与–add-one-line-braces一起使用,结果将是一行括号。

if(isFoo)
    isFoo = false;

变为:

if(isFoo){
    isFoo = false;
}

--add-one-line-braces / -J
将一行括号添加到未划线的一行条件语句(例如’if’,’for’,’while’…)。声明必须在一行上。该选项意味着–keep-one-line-blocks并且不会破坏一个行块。

if(isFoo)
    isFoo = false;

变为:

if(isFoo)
     { isFoo = false; }

--remove-braces / -xj
从条件语句中删除大括号(例如’if’,’for’,’while’……)。该声明必须是单行的单一声明。如果还使用–add-braces或–add-one-line-braces,则结果将是添加大括号。大括号不会从“One True Brace Style”中移除, – style = 1tbs。

if(isFoo)
 {
    isFoo = false;
}

变为:

if(isFoo)
    isFoo = false;

--break-return-type / -xB
--break-return-type-decl / -xD
从函数名称中断返回类型。这两个选项用于函数定义(-xB)和函数声明或签名(-xD)。如果与–attach-return-type一起使用,结果将是破坏返回类型。此选项对Objective-C函数没有影响。

void Foo(bool isFoo);

变为:

空虚
Foo(bool isFoo);

--attach-return-type / -xf
--attach-return-type-decl / -xh
将返回类型附加到函数名称。这两个选项用于函数定义(-xf)和函数声明或签名(-xh)。它们旨在撤消–break-return-type选项。如果与–break-return-type一起使用,结果将是破坏返回类型。此选项对Objective-C函数没有影响。

空虚
Foo(bool isFoo);

变为:

void Foo(bool isFoo);

--keep-one-line-blocks / -O
不要破坏单行块。

if(isFoo)
 { isFoo = false; cout << isFoo << endl; }

保持不变。

--keep-one-line-statements / -o
不要破坏复杂的语句和多个语句驻留在一行上。

if(isFoo)
 {
    isFoo = false; cout << isFoo << endl;
}

保持不变。

--convert-tabs / -c
将制表符转换为行的非缩进部分中的空格。插入的空格数将保持制表符的间距。使用每个选项卡的空格的当前设置。如果在更改每个选项卡的空格时使用convert-tabs,则可能无法产生预期结果。标签不会在引号内替换。

--close-templates / -xy
关闭模板定义的结束尖括号之间的空格。现在,C ++ 11标准允许关闭结束尖括号。在进行更改之前,请确保您的编译器支持此功能。

Stack <int,List <int >> stack1;

变为:

Stack <int,List <int >> stack1;

--remove-comment-prefix / -xp
删除以行开头的多行注释中的前面的“*”。尾随的’*’(如果存在)也会被删除。小于一个缩进的文本缩进为一个缩进。大于一个缩进的文本不会更改。开始一行但不带前面的’*’的多行注释会缩进到一个缩进以保持一致性。这可以稍微修改注释掉的代码块的缩进。包含所有’*’的行保持不变。从注释关闭’* /’中删除额外的间距。

_/ *
 *评论第1行
 *评论第2行
 * /_

变为:

_/ *
    评论第1行
    评论第2行
* /_

--max-code-length=# / -xC#
--break-after-logical / -xL

如果代码超过 字符,则max-code-length选项将断开一行。有效值为50200。没有逻辑条件的行将在逻辑条件(||,&&,…),逗号,paren,分号或空格上中断。

某些代码不会被破坏,例如注释,引号和数组。如果使用keep-one-line-blocks或add-one-line-braces,则不会破坏块。如果与keep-one-line-statements一起使用,如果行超过最大长度,则语句将以分号分隔。如果最大代码长度内没有可用的断点,则在最大代码长度之后的第一个可用断点处将断开该行。

默认情况下,逻辑条件将首先放在新行中。选项 break-after-logical将导致逻辑​​条件最后一行放在上一行。没有max-code-length,此选项无效。

if(thisVariable1 == thatVariable1 || thisVariable2 == thatVariable2 || thisVariable3 == thatVariable3)
    酒吧();

变为:

if(thisVariable1 == thatVariable1
        || thisVariable2 == thatVariable2
        || thisVariable3 == thatVariable3)
    酒吧();

成为(具有突破性的逻辑):

if(thisVariable1 == thatVariable1 ||
        thisVariable2 == thatVariable2 ||
        thisVariable3 == thatVariable3)
    酒吧();

--mode=c
--mode=cs
--mode=java
缩进C类型,C#或Java文件。C类型文件是C,C ++,C ++ / CLI和Objective-C。该选项通常从每个文件的文件扩展名设置。您可以使用此条目覆盖设置。它将用于所有文件,无论文件扩展名如何。它允许格式化程序识别特定于语言的语法,例如C ++类,模板和关键字。


Objective-C选项

这些选项仅对Objective-C文件有效。除非被以下选项覆盖,否则标准paren padding选项仍将应用于Objective-C方法前缀和返回类型。

由于Objective-C有时需要更长的缩进,因此可能需要增加“max-continuation-indent”选项。如果您没有获得所需的paren和square括号,请尝试增加此值。该选项在“缩进选项”部分中描述。

--pad-method-prefix / -xQ
在’ – ‘或’+’Objective-C方法前缀 插入空格填充。这将只添加一个空格。任何其他空格都将被删除。

- (无效)foo1;
- (void)foo2;

变为:

- (void)foo1;
- (void)foo2;

--unpad-method-prefix / -xR
删除’ – ‘或’+’Objective-C方法前缀的所有空格填充。如果与pad-method-prefix一起使用,则将忽略此选项。此选项优先于pad paren outside选项。

- (void)foo1;
- (void)foo2;

变为:

- (void)foo1;
- (void)foo2;

--pad-return-type / -xq
在Objective-C返回类型 插入空格填充。这将只添加一个空格。任何其他空格都将被删除。

- (无效)foo1;
- (void)foo2;

变为:

- (void)foo1;
- (void)foo2;

--unpad-return-type / -xr
在Objective-C返回类型之后 删除所有空格填充。如果与pad-return-type一起使用,则将忽略此选项。此选项优先于pad paren outside选项。

- (void)foo1;
- (void)foo2;

变为:

- (无效)foo1;
- (无效)foo2的;

--pad-param-type / -xS
在Objective-C参数类型周围插入空格填充。这将只添加一个空格。任何其他空格都将被删除。这优先于pad方法冒号选项,并且在方法冒号后总是会导致空格填充。

- (无效)foo1:(布尔)barArg1;
- (void)foo2:(bool)barArg2;

变为:

- (void)foo1:(bool)barArg1;
- (void)foo2:(bool)barArg2;

--unpad-param-type / -xs
删除Objective-C参数类型周围的所有空间填充。此选项优先于pad paren outside选项。pad方法冒号选项优先于开始 paren。关闭的paren总是没有打开。

- (void)foo1:(bool)barArg1;
- (void)foo2:(bool)barArg2;

成为(使用unpadded方法冒号):

- (无效)foo1:(布尔)barArg1;
- (无效)foo2的:(布尔)barArg2;

变成(后面用填充方法冒号):

- (void)foo1:(bool)barArg1;
- (void)foo2:(bool)barArg2;

--align-method-colon / -xM
在Objective-C方法声明和方法调用中对齐冒号。如果未声明此选项,则方法定义将统一缩进,方法调用将与第一个关键字对齐。

- (void)longKeyword:(ID)theArg1
         keyword:(int)theArg2
       错误:(NSError *)theError
{
    [myObj longKeyword:arg1
     keyword:arg2
     错误:arg3];
}

变为(没有声明选项):

- (void)longKeyword:(ID)theArg1
    keyword:(int)theArg2
    错误:(NSError *)theError
{
    [myObj longKeyword:arg1
           keyword:arg2
           错误:arg3];
}

变成(使用align-method-colon):

- (void)longKeyword:(ID)theArg1
           keyword:(int)theArg2
             错误:(NSError *)theError
{
    [myObj longKeyword:arg1
               keyword:arg2
                 错误:arg3];
}

--pad-method-colon=none / -xP0
--pad-method-colon=all / -xP1
--pad-method-colon=after / -xP2
--pad-method-colon=before / -xP3

在Objective-C方法调用中在冒号之前或之后添加或删除空格填充。这些选项将填充一个空格。任何其他空格都将被删除。方法冒号后的空格填充可以用pad-param-type覆盖。

用pad-method-colon = none:

- (无效)insertKey:(ID)键;

用pad-method-colon = all:

- (void)insertKey:(id)key;

用pad-method-colon = after:

- (void)insertKey:(id)key;

用pad-method-colon =之前:

- (void)insertKey:(id)key;


其他选择

这些是可用于命令行的非格式化选项。它们也可以包含在选项文件中。

--suffix=####
将后缀####而不是’.orig’附加到原始文件名(例如–suffix = .bak。如果这是文件扩展名,则必须包含点’。’。否则后缀将被追加到当前文件扩展名。

--suffix=none / -n
不要保留原始文件的备份。格式化后会清除原始文件。

--recursive / -r / -R
对于命令行中的每个目录,递归处理所有子目录。使用递归选项时,文件名语句应包含通配符。Linux用户应将文件路径和名称放在双引号中,这样shell就不会解析通配符(例如“$ HOME / src / * .cpp”)。如果路径或名称包含空格,Windows用户应将文件路径和名称放在双引号中。

--dry-run
执行试运行而不对文件进行任何更改。该报告将照常输出。

--exclude=####
指定要从处理中排除的文件或子目录####。

从文件路径的末尾匹配排除。“templates”的排除选项将排除名为“templates”的所有目录。“cpp / templates”的排除选项将排除所有“cpp / templates”目录。您可以在目录树中向后进行以仅排除所需的目录。

可以以相同方式排除特定文件。“default.cpp”的排除选项将排除名为“default.cpp”的所有文件。“python / default.cpp”的排除选项将排除“python”子目录中包含的名为“default.cpp”的所有文件。您可以在目录树中向后进行以仅排除所需的文件。

不允许使用通配符。可能有多个exclude语句。文件路径和名称可以放在双引号中(例如–exclude =“foo bar.cpp”)。

--ignore-exclude-errors / -i
如果“exclude = ###”选项中存在错误,则允许继续处理。
此选项允许在单个选项文件中输入多个项目的排除项。此选项可以与排除项放在同一选项文件中。它将显示无与伦比的排除。以下选项不会显示不匹配的排除项。

--ignore-exclude-errors-x / -xi
如果“exclude = ###”选项中存在错误,则允许继续处理。
此选项允许在单个选项文件中输入多个项目的排除项。此选项可以与排除项放在同一选项文件中。它不会显示无与伦比的排除。上一个选项将显示不匹配的排除项。

--errors-to-stdout / -X
将错误打印到标准输出而不是标准错误。
此选项对于没有单独输出到标准错误的系统/ shell应该很有用,例如在Windows95中。

--preserve-date / -Z
保留原始文件的修改日期和时间。修改的时间将更改几微秒,以强制更改的文件进行编译。如果使用重定向重命名输入文件,则此选项无效。

--verbose / -v
详细显示模式。显示可选信息,例如版本号,日期,选项文件位置和统计数据。

--formatted / -Q
格式化文件显示模式。仅显示已格式化的文件。不显示未更改的文件。

--quiet / -q
安静的显示模式。抑制除错误消息之外的所有输出。

--lineend=windows / -z1
--lineend=linux / -z2
--lineend=macold / -z3

强制使用指定的行结束样式。有效选项包括windows(CRLF),linux(LF)和macold(CR)。MacOld样式是Mac OS 9及更早版本的格式。MacOS和OS X使用Linux风格。如果未使用其中一个选项,则将从输入文件中自动确定行结束。

重定向在Windows上使用的输出总是有Windows行结束。此选项将被忽略。


仅限命令行

这些选项仅适用于命令行。它们不在选项文件中。

--options=####
--options=none
指定选项文件####以供阅读和使用。它必须包含文件路径和文件名。这将允许从astylerc或.astylerc更改文件名。

“none”选项将禁用默认选项文件(如果存在)。仅使用命令行参数。

选项文件”部分提供了更多信息。

--project
--project=####
--project=none
指定要使用的项目选项文件。选项文件的默认名称应为.astylerc或_astylerc,并且应位于正在格式化的项目的顶级目录中。

指定要使用的项目选项文件####。它必须只包含没有目录路径的文件名。这将允许从.astylerc或_astylerc更改项目文件名。它应该位于正在格式化的项目的顶级目录中。

“none”选项将禁用项目选项文件(如果存在)。在这种情况下,将不使用项目选项文件。

选项文件”部分提供了更多信息。

--ascii / -I
显示的输出仅为ASCII字符。文本将以英文显示,数字不会格式化。短选项必须单独使用,不能与其他选项连接。

--version / -V
打印版本号并退出。短选项必须单独使用,不能与其他选项连接。

--help / -h / -?
打印帮助信息并退出。短选项必须单独使用,不能与其他选项连接。

--html / -!
在默认浏览器中打开HTML帮助文件“astyle.html”并退出。短选项必须单独使用,不能与其他选项连接。必须在标准安装路径中安装文档(适用于Linux的/ usr / share / doc / astyle / html或适用于Windows的%PROGRAMFILES%\ AStyle \ doc)。如果安装到不同的路径,请使用html = ###。

--html=####
使用文件路径####在默认浏览器中打开HTML帮助文件并退出。可以指定除“astyle.help”之外的HTML文件。该路径可以包括目录路径和文件名,或仅包括文件名(例如html = install.html)。如果仅使用文件名,则假定它位于标准安装路径中(Linux的/ usr / share / doc / astyle / html或Windows的%PROGRAMFILES%\ AStyle \ doc)。在这两种情况下,文件名必须包含html扩展名。包含空格的文件路径必须用引号括起来。

在Linux上,使用安装包“xdg-utils”中的脚本“xdg-open”打开HTML文件。默认情况下,应在大多数发行版上安装此选项。

此选项可以打开任何HTML文件。您可能需要的文件是astyle.html(默认值),install.html和index.html。

--stdin=####
使用文件路径####打开文件作为单个文件格式的输入。这是重定向的替代品。不要将此与“<”重定向一起使用。

--stdout=####
使用文件路径####打开文件作为单个文件格式的输出。这是重定向的替代品。不要在“>”重定向中使用它。

        </div>
            </div>
</article>

MinGW中的两组头文件(c++/和c++/tr1/)

今天在搜索cstdio文件时发现有两个,分别位于

mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\lib\gcc\x86_64-w64-mingw32\8.1.0\include\c++
mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\lib\gcc\x86_64-w64-mingw32\8.1.0\include\c++\tr1

唯一的区别只是后者在这个tr1的子文件夹下.
什么是tr1?

C++ TR1 是ISO/IEC TR 19768 C++ Library Extensions(函式库扩充)的一般名称。TR1 是一份文件,内容提出了对C++标准函式库的追加项目。这些追加项目包括了正则表达式、智能指针、哈希表、随机数生成器等。TR1自己并非标准,他是一份草稿文件。然而他所提出的项目很有可能成为下次的官方标准。这份文件的目标在于「为扩充的C++标准函式库建立更为广泛的现成实作品」。
C++ tr1是针对C++标准库的第一次扩展。即将到来的下一个版本的C++标准c++0x会包括它,以及一些语言本身的扩充。tr1包括大家期待已久的smart pointer,正则表达式以及其他一些支持范型编程的内容。草案阶段,新增的类和模板的名字空间是std::tr1。

经过测试,一般情况下编译器调用的是前者的头文件.

C++中的类的访问属性和继承方式

C++中的类的访问属性和继承方式

访问属性

成员属性 内部函数调用 子类调用 外部调用
public 成员
protected 成员 ×
private 成员 × ×

继承方式

继承方式 基类的public成员 基类的protected成员 基类的private成员 概括
public 继承 public protected 不可见 非私有成员保持不变
protected 继承 变为protected 变为protected 不可见 非私有成员变为protected
private 继承 变为private 变为private 不可见 非私有成员成为子类的私有成员

mingw-w64:seh还是sjlj?

SJLJ(setjmp / longjmp):

可用于32位和64位
而不是“零成本”:即使没有抛出异常,也会导致轻微的性能损失(异常重代码中约为15%)但有时可能会受到惩罚更重要的是:https://bugreports.qt-project.org/browse/QTBUG-29653
允许例外遍历例如Windows回调

DWARF(DW2,dwarf-2)

仅可用于32位
没有永久运行时开销
需要整个调用堆栈要启用dwarf,这意味着不能抛出异常,例如Windows系统DLL。

SEH(零开销异常)

将适用于64位GCC 4.8。
rubenvb发布可用[sourceforge.net]目标Win64 / Personal Builds / rubenvb / gcc-4.8-release / x86_64-w64-mingw32-gcc-4.8.0-win64_rubenvb.7z /下载
MinGW-builds发布可用[sourceforge.net ] 

推荐使用SEH