编译器与引用的差异

时间:2013-03-24 06:39:35

标签: c++ visual-c++ gcc

我编译了以下代码。

#include <iostream> 

int main(int argc, char* argv[]) {
    int a = 2; 
    int $b = a; 
    b = 3; 
    std::cout << a << std::endl;
    return 0; 
} 

当我在Visual Studio 2012中编译它时,它按预期输出3。但是,当我在g ++ 3.4.4中编译它时,我收到以下错误。

error: `b' undeclared (first use this function)

为什么以下在Visual Studio 2012中编译但不在g ++中编译?

2 个答案:

答案 0 :(得分:2)

看看标题,我猜你试图这样做:

int& b = a;
据我所知,

&是宣布参考的唯一标准。

看看@ H2CO3回答为什么在VS中进行编译。

答案 1 :(得分:1)

  

为什么以下在Visual Studio 2012中编译

因为VS是废话或者你把它设置为C ++ / PHP模式。

  

但不是用g ++?

由于未声明b,因此仅$b