相关疑难解决方法(0)

在运行时可以检测到C++ 03和C++ 11之间有什么区别?

可以编写一个函数,当用C编译器编译时它将返回0,并且当用C++编译器编译时,将返回1(微不足道的 #ifdef __cplusplus情况并不令人感兴趣).

例如:

int isCPP()
{
    return sizeof(char) == sizeof 'c';
}
Run Code Online (Sandbox Code Playgroud)

当然,只有在sizeof (char)不相同的情况下才会起作用sizeof (int)

另一个更便携的解决方案是这样的:

int isCPP()
{
    typedef int T;
    {
       struct T 
       {
           int a[2];
       };
       return sizeof(T) == sizeof(struct T);
    }
}
Run Code Online (Sandbox Code Playgroud)

我不确定这些例子是否100%正确,但你明白了.我相信还有其他方法可以编写相同的功能.

在运行时可以检测到C++ 03和C++ 11之间有什么区别?换句话说,是否有可能编写一个类似的函数,它返回一个布尔值,表明它是由符合标准的C++ 03编译器还是C++ 11编译器编译的?

bool isCpp11()
{ 
    //???
} 
Run Code Online (Sandbox Code Playgroud)

c++ language-detection c++11 c++03

116
推荐指数
8
解决办法
7388
查看次数

标签 统计

c++ ×1

c++03 ×1

c++11 ×1

language-detection ×1