8
在运行时可以检测到C ++ 03和C ++ 11之间有什么区别(如果有)?
可以编写一个函数,当使用C编译器进行编译时,该函数将返回0,而使用C ++编译器进行编译时,该函数将返回1(用琐碎的处理 #ifdef __cplusplus是没有意义的)。 例如: int isCPP() { return sizeof(char) == sizeof 'c'; } 当然,以上内容仅sizeof (char)在与sizeof (int) 另一个更便携的解决方案是这样的: int isCPP() { typedef int T; { struct T { int a[2]; }; return sizeof(T) == sizeof(struct T); } } 我不确定这些示例是否100%正确,但是您可以理解。我相信还有其他方法可以编写相同的函数。 在运行时可以检测到C ++ 03和C ++ 11之间有什么区别(如果有)?换句话说,是否可以编写类似的函数来返回一个布尔值,该值指示该布尔值是由合格的C ++ 03编译器还是C ++ 11编译器编译的? bool isCpp11() …