我目前正在使用gcc 4.8.2而没有std选项来编译我的c / c ++代码。 现在我想使用c / c ++的新语言版本提供的一些新的C / C ++特性。
(Un?)幸运的是,gcc了解很多种C / C ++:
目前我在问自己:
澄清(根据评论)
请注意,我只使用一个编译器。不是两个只有版本号不同的gcc。 当只使用一个gcc编译器时,我只是要求不同std选项之间的ABI不兼容。
答案 0 :(得分:1)
一般来说:
在有限的情况下,您可能会发现某些类实际上不会随语言版本而更改。然而,这种情况很少见,C ++ 11标准需要rvalue引用,而C ++ 03模式则不能提供rvalue引用。
对于支持和不支持GNU扩展的版本,您可能会获得更多成功,但仍需要通过预处理器运行每个头,并验证编译器是否可以看到完全相同的令牌序列两种选择。
这完全不同于ABI更改,这可能导致内存布局或名称修改在编译器变体之间有所不同。
您还可以避免使用任何版本和特定于语言的功能,从而避免在您自己的公共API上违反单定义规则。从本质上讲,这意味着一个扁平的C API。