解析有冲突的编译器选项
一般来说,如果同一选项有多个变体,
( -qxref 和 -qattr 除外)
,编译器将使用最后一个指定的设置。 在命令行上指定的编译器选项必须以您希望编译器处理这些选项的顺序出现。 但是,某些选项在多次指定时具有累积效应; 例如, -I目录 和 -L目录 选项。
当多次使用子选项指定 -qcheck, -qfloat和 -qstrict 之类的选项时,每个子选项将覆盖该子选项的先前规范,但不同的子选项是累积的。
在大多数情况下,编译器使用以下顺序来解析冲突或不兼容的选项:
- 源代码中的编译指示语句覆盖在命令行上指定的编译器选项。
- 在命令行上指定的编译器选项将覆盖在配置文件中指定 作为环境变量或 的编译器选项。 如果在命令行上指定了有冲突或不兼容的编译器选项,那么稍后在命令行上显示的选项优先。
- 指定为环境变量的编译器选项将覆盖配置文件中指定的编译器选项。
- 配置文件中指定的编译器选项将覆盖编译器缺省设置。
并非所有选项冲突都是使用上述规则解决的。 下表概述了异常以及编译器如何处理它们之间的冲突。 在 为特定于体系结构的编译指定编译器选项中讨论了用于解决编译器方式与特定于体系结构的选项之间的冲突的规则。
| 选项 | 有冲突的选项 | 解决方案 |
|---|---|---|
-qalias=allptrs |
-qalias=noansi | -qalias=noansi |
-qalias=typeptr |
-qalias=noansi | -qalias=noansi |
-qhalt |
-qhalt 指定的多个严重性 | 指定的最低严重性 |
-qnoprint |
-qxref, -qattr, -qsource, -qlistopt, -qlist | -qnoprint |
| -qfloat=rsqrt | -qnoignerrno | 指定的最后一个选项 |
-qxref |
-qxref=full | -qxref=full |
-qattr |
-qattr=full | -qattr=full |
| -qfloat=hsflt | -qfloat=spnans | -qfloat=hsflt |
-qfloat=hssngl |
-qfloat=spnans | -qfloat=hssngl |
| -E | -P, -S | -E |
| -P | -c, -o, -S | -P |
| -# | -v | -# |
| -f | -B, -t, -W和 -qpath | -B, -t, -W, -qpath |
| -qpath | -B, -t | -qpath |
| -S | -c | -S |
| -qnostdinc | -qc_stdinc, -qcpp_stdinc | -qnostdinc |