C ++ 14似乎即将到来,编译器已经在尝试实现这个新版本的核心功能。我正在查看GCC support for these core features并注意到二进制文字部分:GCC实现了它们,但似乎在GNU二进制文字和C ++ 14二进制文字之间有所区别。以下是两者的相应参考:
我试图找到他们两个之间的一些差异,因为GCC似乎有所作为,但找不到任何东西。你们中有谁知道更多可能的不兼容性吗?
答案 0 :(得分:20)
从gcc 4.9中引入支持的commit diff,唯一的区别是gcc现在接受二进制文字作为C ++ 1y的语言特性,并且不警告它们是gcc扩展如果指定了C ++ 1y支持。实际实施没有变化。
此前:
warning : binary constants are a GCC extension
现在,除非指定-std=c++1y
:
warning : binary constants are a C..1y feature or GCC extension
答案 1 :(得分:3)
我猜测差异是因为一个是扩展,然后人们不会太倾向于使用它而另一个是标准兼容且无需启用扩展即可访问。这是一种形式。
答案 2 :(得分:0)
您指向的第一个文档是二进制文字的GNU实现,作为C语言的扩展(即,它是C的非标准功能,该文档定义了gcc如何实现语言的扩展)。 / p>
您指向的第二个文档是将二进制文字添加到C ++ 11语言的提议,但据我所知,它也未被接受(*),这意味着它也不是标准C ++的一部分,它仍然是gcc提供的语言扩展。
据我所知,这个功能在编译器中是不可移植的,但您可以使用用户定义的文字在C ++ 11中定义自己的二进制文字实现。
(*)s /不接受/我在N3485“编程语言C ++标准工作草案”中找不到对二进制文字的任何引用,但它可能是下一个C ++标准所接受的功能。