设置编译器的主要发行版兼容模式。此选项控制 __SUNPRO_CC_COMPAT 和 __cplusplus 宏。
C++ 编译器有三个主要模式。兼容模式接受 4.2 编译器所定义的 ARM 语义和语言。标准模式接受符合 2003 年更新的 ANSI/ISO 1998 C++ 标准的构造。由于 ANSI/ISO 标准在名称修饰、虚拟表布局和其他 ABI 详细信息方面强制要求进行不兼容的重大更改,因此这些模式互不兼容。在 Linux 上,使用 -compat=g 选项可以添加与 gcc/g++ 编译器的兼容性。
这些模式由 –compat 选项进行区分,下文中介绍了相应值。
-compat 选项可以有下列值。
值 |
含义 |
---|---|
–compat=4 |
(兼容模式)设置语言和二进制使其与 4.0.1、4.1 和 4.2 编译器兼容。将 __cplusplus 预处理程序宏和 __SUNPRO_CC_COMPAT 预处理程序宏分别设置为 1 和 4。 |
–compat=5 |
(标准模式)设置语言和二进制使其与 ANSI/ISO 标准模式兼容。将 __cplusplus 预处理程序宏和 __SUNPRO_CC_COMPAT 预处理程序宏分别设置为 199711L 和 5。 |
-compat=g |
(仅限 Linux)用于识别 g++ 语言扩展,并使编译器在 Linux 平台上生成与 g++ 二进制兼容的代码。将 __cplusplus 预处理程序宏设置为 199711L,将 __SUNPRO_CC_COMPAT 预处理程序宏设置为 'G'。 |
使用 -compat=g 时,二进制兼容性仅扩展到共享(动态或 .so)库,而不扩展到个别 .o 文件或归档 (.a) 库。
例如,将 g++ 共享库链接到 C++ 主程序:
% g++ -shared -o libfoo.so -fpic a.cc b.cc c.cc % CC -compat=g main.cc -L. -lfoo |
将 C++ 共享库链接到 g++ 主程序:
% CC -compat=g -G -o libfoo.so -Kpic a.cc b.cc c.cc % g++ main.cc -L. -lfoo |
如果没有指定 –compat 选项,则假定 –compat=5。
如果仅指定 –compat,则假定 –compat=4。
在兼容模式 (-compat[=4]) 下,不能使用标准库。
–compat[=4] 不能与下列任何选项一起使用。
-Bsymbolic
-features=[no%]strictdestrorder
-features=[no%]tmplife
-library=[no%]iostream
-library=[no%]Cstd
-library=[no%]Crun
-library=[no%]rwtools7_std
-xarch=native64、-xarch=generic64、-xarch=v9、-xarch=v9a 或 -xarch=v9b
–compat=5 不能与下列任何选项一起使用。
-Bsymbolic
+e
features=[no%]arraynew
features=[no%]explicit
features=[no%]namespace
features=[no%]rtti
library=[no%]complex
library=[no%]libC
-vdelx
生成共享库时,不要使用 -Bsymbolic。
《C++ 迁移指南》