ZHCU820Y September 2004 – June 2021
选项控制编译器的运行。本部分说明选项约定和选项摘要表。此外,还提供最常用选项(包括用于类型检查和汇编的选项)的详细说明。
如需查看选项的帮助屏幕摘要,请在命令行上输入不带参数的 cl430。
下述原则适用于编译器选项:
可以使用 MSP430_C_OPTION 环境变量为编译器定义默认选项。有关环境变量的详细说明,请参阅Topic Link Label3.4.1。
表 3-8 到表 3-29 汇总了所有选项(包括链接选项)。使用表中的参考资料以获取更完整的选项说明。
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--silicon_version={msp|mspx} | -v | 选择指令集。 | Topic Link Label3.3.4 |
--code_model={small|large} | 指定代码内存模型。 | Topic Link Label7.1.1 | |
--data_model={small|large| restricted} |
指定数据内存模型。 | Topic Link Label7.1.2 | |
--near_data={globals|none} | 指定必须靠近的数据。默认为 globals。 | Topic Link Label7.1.3 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--opt_level=off | 禁用所有优化。 | Topic Link Label4.1 | |
--opt_level=n | -On | 级别 0 (-O0) 仅优化寄存器使用情况(如果未使用选项,则为默认值)。 级别 1 (-O1) 使用级别 0 优化并在本地进行优化。 级别 2 (-O2) 使用级别 1 优化并在本地进行优化。 级别 3 (-O3) 使用级别 2 优化并对文件进行优化。 级别 4 (-O4) 使用级别 3 优化并执行链接时间优化。 |
Topic Link Label4.1、Topic Link Label4.3、Topic Link Label4.6 |
--opt_for_speed[=n] | -mf | 控制大小和速度之间的权衡(0-5 范围)。如果此选项未指定 n,则默认值为 4。如果未指定此选项,则默认设置为 1。 | Topic Link Label4.2 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--align_for_power | 将所有函数和循环与 4 字节边界对齐。如果小函数或循环与32 位缓冲区对齐以从闪存中获取代码,则可以实现节能。对于较大的函数和循环,节能就不太重要。 | -- | |
--auto_inline=[size] | -oi | 设置自动内联大小(仅限 --opt_level=3)。如果未指定 size,则默认值为 1。 | Topic Link Label4.5 |
--call_assumptions=n | -opn | 级别 0 (-op0) 指定了模块包含从提供给编译器的源代码外部调用或修改的函数和变量。 级别 1 (-op1) 指定了模块包含从提供给编译器的源代码外部修改的变量,但不使用从源代码外部调用的函数。 级别 2 (-op2) 指定了模块不包含从提供给编译器的源代码外部调用或修改的函数或变量(默认值)。 级别 3 (-op3) 指定了模块包含从提供给编译器的源代码外部调用的函数,但不使用从源代码外部修改的变量。 |
Topic Link Label4.4.1 |
--disable_inlining | 防止发生任何内联。 | Topic Link Label3.11 | |
--fp_mode={relaxed|strict} | 启用或禁用宽松浮点模式。 | Topic Link Label3.3.3 | |
--fp_reassoc={on|off} | 启用或禁用浮点算术的重新关联。 | Topic Link Label3.3.3 | |
--gen_opt_info=n | -onn | 级别 0 (-on0) 禁用优化信息文件。 级别 1 (-on2) 生成优化信息文件。 级别 2 (-on2) 生成详细的优化信息文件。 |
Topic Link Label4.3.1 |
--optimizer_interlist | -os | 交叉列出优化器注释与汇编语句。 | Topic Link Label4.11 |
--program_level_compile | -pm | 组合源文件以执行程序级优化。 | Topic Link Label4.4 |
--aliased_variables | -ma | 假设变量被别名 | Topic Link Label4.9 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--symdebug:dwarf | -g | 默认行为。启用符号调试。调试信息的生成不会影响优化。因此,默认情况下会生成调试信息。 | Topic Link Label3.3.5 Topic Link Label4.12 |
--symdebug:dwarf_version=2|3|4 | 指定 DWARF 格式版本。 | Topic Link Label3.3.5 | |
--symdebug:none | 禁用所有符号调试。 | Topic Link Label3.3.5 Topic Link Label4.12 |
|
--symdebug:skeletal | (已弃用;无效。) |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--include_path=directory | -I |
将指定的目录添加到 #include 搜索路径。 | Topic Link Label3.5.2.1 |
--preinclude=filename | 在编译开始时包含 filename。 | Topic Link Label3.3.3 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--advice:power[={all|none|rulespec}] | 启用检查指定的 ULP Advisor 规则。(默认为 all。) | Topic Link Label3.3.3 | |
--advice:power_severity={error| warning|remark|suppress} |
设置 ULP Advisor 规则的诊断严重程度。 | Topic Link Label3.3.3 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--advice:hw_config[={all|none| rulespec} | 启用查检器件配置设置。(如果此选项未包含在命令行中,则默认为 none。如果使用此选项但未指定值,则默认为 all。) | Topic Link Label3.3.3 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--compile_only | -c | 禁用链接(否定 --run_linker)。 | Topic Link Label5.1.3 |
--help | -h | 打印(在标准输出设备上)编译器理解的选项的说明。 | Topic Link Label3.3.2 |
--run_linker | -z | 导致从编译器命令行调用链接器。 | Topic Link Label3.3.2 |
--skip_assembler | -n | 编译 C/C++ 源文件,从而生成汇编语言输出文件。汇编器不会运行,也不会生成目标文件。 | Topic Link Label3.3.2 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--c89 | 根据 ISO C89 标准处理 C 文件。 | Topic Link Label6.15 | |
--c99 | 根据 ISO C99 标准处理 C 文件。 | Topic Link Label6.15 | |
--c11 | 根据 ISO C11 标准处理 C 文件。 | Topic Link Label6.15 | |
--c++14 | 根据 ISO C++14 标准处理 C++ 文件。 已弃用 --c++03 选项。 |
Topic Link Label6.15 | |
--cpp_default | -fg | 将所有带有 C 扩展名的源文件作为 C++ 源文件处理。 | Topic Link Label3.3.7 |
--enum_type={packed|unpacked} | 选择是否使用紧凑整数类型来存储小型枚举类型。 | Topic Link Label3.3.4 | |
--exceptions | 启用 C++ 异常处理。 | Topic Link Label6.8 | |
--extern_c_can_throw | 允许外部 C 函数传播异常。 | -- | |
--float_operations_allowed ={none|all|32|64} |
限制允许的浮点运算类型。 | Topic Link Label3.3.3 | |
--gen_cross_reference | -px | 生成交叉引用列表文件 (.crl)。 | Topic Link Label3.9 |
--pending_instantiations=# | 指定在任何给定时间可能正在进行的模板实例化的数量。使用 0 来指定无限数量。 | Topic Link Label3.3.4 | |
--plain_char={signed|unsigned} | -mc | 将字符类型的变量从无符号更改为有符号。默认为无符号。 | Topic Link Label3.3.4 |
--printf_support={nofloat|full| minimal} |
支持小型且版本受限的 printf 函数系列(sprintf、fprintf 等)和 scanf 函数系列(sscanf、fscanf 等)运行时支持函数的支持。 | Topic Link Label3.3.3 | |
--relaxed_ansi | -pr | 启用宽松模式;忽略严格的 ISO 违规。默认设置为 on。要禁用此模式,请使用 --strict_ansi 选项。 | Topic Link Label6.15.3 |
--rtti | -rtti | 启用 C++ 运行时类型信息 (RTTI)。 | –- |
--strict_ansi | -ps | 启用严格的 ANSI/ISO 模式(适用于 C/C++,不适用于 K&R C)。在此模式下,禁用与 ANSI/ISO C/C++ 冲突的语言扩展。在严格的 ANSI/ISO 模式下,大多数 ANSI/ISO 违规都会报告为错误。被视为酌情处理的违规行为可能会报告为警告。 | Topic Link Label6.15.3 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--preproc_dependency[=filename] | -ppd | 仅执行预处理,但不写入预处理的输出,而是写入适合于输入到标准 make 实用程序的依赖行列表。 | Topic Link Label3.5.8 |
--preproc_includes[=filename] | -ppi | 仅执行预处理,但不写入预处理的输出,而是写入 #include 指令中包含的文件列表。 | Topic Link Label3.5.9 |
--preproc_macros[=filename] | -ppm | 仅执行预处理。将预定义和用户定义的宏列表写入与输入同名但扩展名为 .pp 的文件。 | Topic Link Label3.5.10 |
--preproc_only | -ppo | 仅执行预处理。将预处理的输出写入与输入同名但扩展名为 .pp 的文件。 | Topic Link Label3.5.4 |
--preproc_with_comment | -ppc | 仅执行预处理。将预处理的输出(保留注释)写入与输入同名但扩展名为 .pp 的文件。 | Topic Link Label3.5.6 |
--preproc_with_compile | -ppa | 使用任何通常会禁用编译的 -pp<x> 选项在预处理后继续编译。 | Topic Link Label3.5.5 |
--preproc_with_line | -ppl | 仅执行预处理。将带有行控制信息(#line 指令)的预处理的输出写入与输入同名但扩展名为 .pp 的文件。 | Topic Link Label3.5.7 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--define=name[=def] | -D | 预定义 name。 | Topic Link Label3.3.2 |
--undefine=name | -U | 未定义 name。 | Topic Link Label3.3.2 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--compiler_revision | 打印出编译器发布版本并退出。 | -- | |
--diag_error=num | -pdse | 将 num 标识的诊断分类为错误。 | Topic Link Label3.7.1 |
--diag_remark=num | -pdsr | 将 num 标识的诊断分类为备注。 | Topic Link Label3.7.1 |
--diag_suppress=num | -pds | 抑制 num 标识的诊断。 | Topic Link Label3.7.1 |
--diag_warning=num | -pdsw | 将 num 标识的诊断分类为警告。 | Topic Link Label3.7.1 |
--diag_wrap={on|off} | 使诊断消息换行(默认为 on)。请注意,此命令行选项不能在 Code Composer Studio IDE 中使用。 | ||
--display_error_number | -pden | 显示诊断的标识符及其文本。请注意,此命令行选项不能在 Code Composer Studio IDE 中使用。 | Topic Link Label3.7.1 |
--emit_warnings_as_errors | -pdew | 将警告视为错误。 | Topic Link Label3.7.1 |
--gen_func_info_listing | 生成用户信息文件 (.aux)。 | Topic Link Label3.3.2 | |
--issue_remarks | -pdr | 发出备注(非严重警告)。 | Topic Link Label3.7.1 |
--no_warnings | -pdw | 抑制诊断警告(仍会发出错误)。 | Topic Link Label3.7.1 |
--quiet | -q | 抑制进度消息(静默)。 | -- |
--set_error_limit=num | -pdel | 将错误限制设置为 num。在在错误达到这个数量后,编译器放弃编译。(默认为 100。) | Topic Link Label3.7.1 |
--super_quiet | 超级静默模式。 | -- | |
--tool_version | -version | 显示每个工具的版本号。 | -- |
--verbose | 显示横幅和函数进度信息。 | -- | |
--verbose_diagnostics | -pdv | 提供详细的诊断消息,以自动换行的方式显示原始源代码。请注意,此命令行选项不能在 Code Composer Studio IDE 中使用。 | Topic Link Label3.7.1 |
--write_diagnostics_file | 生成诊断消息信息文件。编译器唯一选项。请注意,此命令行选项不能在 Code Composer Studio IDE 中使用。 | Topic Link Label3.7.1 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--gen_preprocessor_listing | -pl | 生成原始列表文件 (.rl)。 | Topic Link Label3.10 |
--section_sizes={on|off} | 生成段大小信息,包括含可执行代码和常量、常量或初始化数据(全局和静态变量)以及未初始化数据的段的大小。(如果此选项未包含在命令行中,则默认为 off。如果使用此选项但未指定值,则默认为 on。) | Topic Link Label3.7.1 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--common={on|off} | 默认为 on。设置为 on 时,未初始化的文件范围变量作为通用符号发出。设置为 off 时,不会创建通用符号。 | Topic Link Label3.3.4 | |
--disable_interrupts_around_hw_mpy=off | 将此选项设置为 off 会在内联的硬件乘法运算期间使中断启用。仅当所有 ISR 不使用乘法或调用其他函数时才能使用此选项。 | Topic Link Label3.3.4 | |
--gen_data_subsections={on|off} | 将所有聚合数据(数组、结构和联合体)放入子段中。这使得链接器可以更好地控制在最终链接步骤期间删除未使用的数据。有关默认设置的详细信息,请参阅右侧的链接。 | Topic Link Label5.2.2 | |
--global_register={r4|r5} | 保留寄存器供用户使用。 | ||
--large_memory_model | -ml | 在编译MSP430X 时使用大型内存模型。(已弃用) | Topic Link Label3.3.4 |
--ramfunc={on|off} | 如果设置为 on,则指定所有函数都应放置在 RAM 中的 .TI.ramfunc 段中。 | Topic Link Label3.3.4 | |
--silicon_errata={errata} | 生成代码以处理指定的芯片勘误表。errata 值可以是 CPU12、CPU13、CPU15、CPU18、CPU19、CPU21、CPU22、CPU23 或 CPU40。有关详细信息,请参阅相应的器件勘误表。 | ||
--use_hw_mpy[={16|32|F5|none}] | 如果 --opt_for_speed 设置为 1 或更高,则将所有对默认整数/长型乘法例程的引用替换为采用硬件乘法器支持的乘法例程版本。此外,如果 --opt_for_speed 设置为 4 或 5,则在代码生成期间内联硬件乘法。 | Topic Link Label3.3.4 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--entry_hook[=name] | 启用入口挂钩。 | Topic Link Label3.14 | |
--entry_parm={none|name| address} |
将函数的参数指定给 --entry_hook 选项。 | Topic Link Label3.14 | |
--exit_hook[=name] | 启用出口挂钩。 | Topic Link Label3.14 | |
--exit_parm={none|name|address} | 将函数的参数指定给 --exit_hook 选项。 | Topic Link Label3.14 | |
--remove_hooks_when_inlining | 删除自动内联函数的入口/出口挂钩。 | Topic Link Label3.14 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--analyze=codecov | 从配置文件数据生成分析信息。 | Topic Link Label4.8.2.2 | |
--analyze_only | 仅生成分析。 | Topic Link Label4.8.2.2 | |
--gen_profile_info | 生成检测代码以收集配置文件信息。 | Topic Link Label4.7.1.3 | |
--use_profile_info=file1[, file2,...] | 指定配置文件信息文件。 | Topic Link Label4.7.1.3 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--keep_asm | -k | 保留汇编语言 (.asm) 文件。 | Topic Link Label3.3.11 |
--asm_listing | -al | 生成汇编列表文件。 | Topic Link Label3.3.11 |
--c_src_interlist | -ss | 交叉列出 C 源代码和汇编语句。 | Topic Link Label3.12 Topic Link Label4.11 |
--src_interlist | -s | 交叉列出优化器注释(如果可用)和汇编源语句;否则交叉列出 C 语言和汇编源语句。 | Topic Link Label3.3.2 |
--absolute_listing | -aa | 启用绝对列表。 | Topic Link Label3.3.11 |
--asm_define=name[=def] | -ad | 设置 name 符号。 | Topic Link Label3.3.11 |
--asm_dependency | -apd | 执行预处理;仅列出程序集依赖项。 | Topic Link Label3.3.11 |
--asm_includes | -api | 执行预处理;仅列出包含的 #include 文件。 | Topic Link Label3.3.11 |
--asm_undefine=name | -au | 不对预定义的常量 name进行定义。 | Topic Link Label3.3.11 |
--asm_listing_cross_reference | -ax | 生成交叉引用文件。 | Topic Link Label3.3.11 |
--include_file=filename | -ahi | 包含汇编模块的指定文件。 | Topic Link Label3.3.11 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--asm_file=filename | -fa | 不管其扩展名为何,都将 filename 标识为汇编源文件。默认情况下,编译器和汇编器将 .asm 文件视为汇编源文件。 | Topic Link Label3.3.7 |
--c_file=filename | -fc | 不管其扩展名为何,都将 filename 标识为 C 源文件。默认情况下,编译器将 .c 文件视为 C 源文件。 | Topic Link Label3.3.7 |
--cpp_file=filename | -fp | 不管其扩展名为何,都将 filename 标识为 C++ 文件。默认情况下,编译器将 .C、.cpp、.cc 和 .cxx 文件视为 C++ 文件。 | Topic Link Label3.3.7 |
--obj_file=filename | -fo | 不管其扩展名为何,都将 filename 标识为目标代码文件。默认情况下,编译器和链接器将 .obj 文件视为目标代码文件,包括 *.c.obj 和 *.cpp.obj 文件。 | Topic Link Label3.3.7 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--abs_directory=directory | -fb | 指定绝对列表文件目录。默认情况下,编译器使用目标文件目录。 | Topic Link Label3.3.10 |
--asm_directory=directory | -fs | 指定汇编文件目录。默认情况下,编译器使用当前目录。 | Topic Link Label3.3.10 |
--list_directory=directory | -ff | 指定汇编列表文件和交叉引用列表文件目录。默认情况下,编译器使用目标文件目录。 | Topic Link Label3.3.10 |
--obj_directory=directory | -fr | 指定目标文件目录。默认情况下,编译器使用当前目录。 | Topic Link Label3.3.10 |
--output_file=filename | -fe | 指定编译输出文件名;可以覆盖 --obj_directory。 | Topic Link Label3.3.10 |
--pp_directory=dir | 指定预处理器文件目录。默认情况下,编译器使用当前目录。 | Topic Link Label3.3.10 | |
--temp_directory=directory | -ft | 指定临时文件目录。默认情况下,编译器使用当前目录。 | Topic Link Label3.3.10 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--asm_extension=[.]extension | -ea | 设置汇编源文件的默认扩展名。 | Topic Link Label3.3.9 |
--c_extension=[.]extension | -ec | 设置 C 源文件的默认扩展名。 | Topic Link Label3.3.9 |
--cpp_extension=[.]extension | -ep | 设置 C++ 源文件的默认扩展名。 | Topic Link Label3.3.9 |
--listing_extension=[.]extension | -es | 设置列表文件的默认扩展名。 | Topic Link Label3.3.9 |
--obj_extension=[.]extension | -eo | 设置目标文件的默认扩展名。 | Topic Link Label3.3.9 |
选项 | 别名 | 效果 | 段 |
---|---|---|---|
--cmd_file=filename | -@ | 将文件内容解释为命令行的扩展。可以使用多个 -@ 实例。 | Topic Link Label3.3.2 |