📄 08 编译器设置.txt
字号:
编译器选项设置:有ARM C,ARM C++,Thumb C和Thumb C++四种编译器,这几种编译器设置方法相同,以ARM C为例介绍.
1. Target and Source选项卡设置:
Architecture or Processor下拉列表框:用于选择目标系统中的ARM体系结构版本号或者处理器编号.
Floating Point下拉列表:用于选择系统中浮点部件的体系结构,设置本选项后将使得特定CPU型号所含的浮点部件的体系结构失效.取值范围与前面汇编器介绍相同.
Byte Order:使用big-endian内存模式还是little-endian内存模式.
big-endian:地址为A的字单元包括字节单元A,A+1,A+2和A+3字节单元由高位到低位字节顺序为A,A+1,A+2,A+3.
little-endian:地址为A的字单元包括字节单元A,A+1,A+2和A+3字节单元由高位到低位字节顺序为A+3,A+2,A+1,A.
Source Language:确定源文件的类型,可能取值如下:
ANSI/ISO Standard C:指定源程序满足比较严格的ANSI C标准,这时删除了一些语言特性,扩展了一些细小的功能.
Strict ANSI/ISO Standard C:指定源程序满足严格的ANSI C标准.
对于C++编译器来说还有下面三个选项:
ISO/IEC Standard C++:基本满足ISO/IEC C++标准,扩展了一些细小的功能.
Strict ISO/IEC Standard C++:严格满足ISO/IEC C++标准.
Embedded C++:指定源程序满足工业C++标准,即Embedded C++标准. Embedded C++语言是标准C++语言的一个子集,它主要用于嵌入式应用环境,更注重代码执行效率.
2. ATPCS (ARM and Thumb Procedure Call Standard)
interworking 支持/禁用 C,ASM代码混合使用.
Software stack check 软件数据栈检查.
ropi,rwpi 基本同ASM部分
3. Warnings (报警选项设置)
No warnings 关闭所有报警
Warn for all condition 打开所有报警
C/C++:
Assignment in condition : 报警 if(a=b)
ANSI C extension :
1. 对char,long,short,long long 等数据类型进行位操作时.
2. 把char,float,short,或枚举参数指定给如 va_start()函数时
Header file not guarded : 包含一个无保护的头文件时报警, 未使用"",<>包含.
Double to float : 改变非限定的浮点常量数据类型时报警
Long precision in wider context : 运算产生了数据扩展.则报警,如 int = int * int ; 而 int*int可能为 long
Implicit narrowing : 下列情况下,在int,char的环境中对长表达式有隐含的限制.在整型数或有限的浮点数环境中对浮点表达式有隐含的限制.
Non ANSI header : 只对ANSI C 头文件使用包含 # include <>.
Padding inserted in struct : 报警编译器在结构中插入补丁.
C to C++ incompatibility : 关闭C语言程序中将来可能和C++引起兼容性总理的报警信息.
Unused declaration : 定义了,未使用,则报警.
C++:
Implicit constructor : 在程序中发现隐含构造器时报警
Unused this in non-static member funtion : 报警,在非静态的元函数中没有使用隐含的 this 参数.
Member and base inits out of order : 关闭由C++程序中构造器初始化的顺序而引起的报警信息.
Implicit Virtual : 一个来自在类的非虚元函数中隐藏了一个父类的虚元函数.
4. Errors (错误选项设置)
C/C++:
Implicit pointer cast : 关闭一些隐含的错误,如一个隐含的非零 int 转换到 pointer
Other dubious cast : 关闭一些模糊不清的表达错误,例如从short类型到 pointer类型的转换.
Linkage conflicts : 关闭一个由于链接不协调而产生的错误.错误的原因的原因是:函数被隐含地声明为extern 后又被声明为 static.
Junk at end of #endif/ #else / #undef : 关闭由于预处理结尾有多余字符引而引起的错误信息
Zero-length arrays : 关闭由于数组长度为零而引起的错误信息.
C++:
Access control violations : 不选时,则将错误降低为报警.
Implicit 'int' : 当在类似 const i的构造中使用隐含的int数据类型时,系统认为是一个错误,使用该选项,则降低到警告.
5. Debug / Optionization (调试和优化选项)
Debug Control
Enable debug table generation : 编译输出的文件中会包含调试信息表.
Include preprocessor symbol : 关闭在目标文件中的关于宏定义的调试信息.
Enable debug table generation : 指定 DWARF2 格式为调试信息表格式
DWARF2 是指一个2.0版本的调试信息格式,这是TIC(Tool Interface Standard)国际委员会所制定的,适合32位机的运行环境.
Optimization Level
Minmum : 最低级别优化,编译器只对源程序进行简单的转换,调试信息表最直观.
Most : 不完全优化,关闭了一些严重影响高度效果的优化功能.
All : 完全优化,目标代码与源代码之间的对应关系不清晰.
Optimization Criterion
For Space : 优化存储空间
For time : 优化运行时间
6. Preprocessor (预定义)
查看,定义,删除宏.
7. Code Generation (设置关于输出代码的一些规定)
Split load and store multiple : 指定编译器把LDM和STM指令分解为两个或更多个LDM和STM指令,如果一次传送数据较多,可能会引起超时中断。
Narrow double constants to float constants : 把无后缀的浮点常量从双精度改变为不确定的类型。有些情况下可以改进程序执行速度。
On ELF section per function : 指定编译器为源文件的每一个函数生成一段 ELF 格式的输出段,输出段的名称和函数名相同。
Enum container always int : 强制把枚举数据都作为整型数据存储。
Plain char is signed : 把char型数据作为有符号数据。
8. Extras (via 文件格式)
via 文件,保存,导入,以上设置。
其他命令行选项:(IDE下无法设定的)
seach-paths 设定包含文件的搜索路径。
code-generation-options 输出代码的选项。
output-format
-asm 产生一个汇编语言的列表文件
-asm -fs 产生一个汇编语言的列表文件,扩展名是 txt
-c 只进行编译但不准备链接
additional-chechs 附加检测项。
warning-options 设置报警信息的种类
preprocessor-options 指定预处理的特性。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -