如果编译器符合Cpp0x,那么#defined是什么?

Vik*_*ehr 11 c++ c++11

当编译器符合Cpp0x时,是否有官方或非官方的#defines?更好的是,对于特定的Cpp0x功能(〜#cpp0xlambda,#cpp0xrvalue等)?

(网上没有发现任何相关信息)

Kir*_*sky 14

对于C++ 03,根据16.8/1(预定义的宏名称):

__cplusplus编译C++转换单元时,名称定义为值199711L.

对于C++ 0x draft n2857,根据16.8/1(预定义的宏名称):

__cplusplus编译C++转换单元时,名称定义为值[tbd].


Mar*_*off 9

Bjarne的C++ 0x FAQ说:

__cplusplus

在C++ 0x中,宏__cplusplus将被设置为与当前值不同(大于)的值199711L.

  • 但是对于没有实现*full*C++ 98标准的任何编译器,宏`__cplusplus`不应该设置为`199711L`. (2认同)