在gcc和visual c ++中使用'>>'

ami*_*mit 1 c++ gcc visual-c++

我们正在编写一个使用gcc和Visual C++编译的应用程序.一些团队成员只使用Visual C++/Windows,而其他人只使用gcc/linux.由于编译器之间的差异,构建有时会中断.我已经"修复"了几个导致使用编译器选项来启用/禁用警告的构建中断的场景,但是目前我仍然坚持使用C++模板中使用的">>".

Visual Studio似乎单方面扩展了标准,将">>"包含在模板中作为有效表达式(这仅在建议的C++ 0x中有效).但是gcc不接受这个作为有效的模板.现在我无法在Visual Studio中找到一个选项来禁止">>"或在gcc中禁用">>".我该怎么办?

注意:这个问题是关于双角支架,而不是右移操作员.

Jos*_*shD 9

我会将它们分开到>>.这就是现行标准所要求的; 它是最正确和可移植的代码.据我所知,如果尖括号彼此相邻,gcc甚至不会编译.

  • 然后,您需要执行编码标准.sbi的建议听起来不错.所有程序员都需要编写适合每个人的代码.如果他们打破了构建,他们做错了! (4认同)

M. *_* E. 8

GCC目前(从4.3版开始)通过以下方式支持:

g++ --std=c++0x -o output file1.cpp file2.cpp ...
Run Code Online (Sandbox Code Playgroud)

您必须明确指定您的源代码是用C++ 0x标准编写的.

  • @Amit Kumar:是的,它是实验性的,但是"直角括号"功能将永远存在. (7认同)
  • 但是``>`也将继续工作,并且具有额外的优点,它也可以_now_.为GCC启用C++ 0x扩展的问题可能是这将使GCC用户引入VC无法处理的代码.对不起,但我不喜欢这个建议.当你在做跨平台的东西时,你需要在所有平台上找到可用的_and stable_.C++ 1x不是. (3认同)
  • @Amit:不会删除功能.功能完整,从现在开始他们正在进行的*仅*更改是小错误修正和措辞的变化. (3认同)