【问题标题】:compiler error when returning reference in c, but works in c++ [duplicate]在c中返回引用时编译器错误,但在c++中有效[重复]
【发布时间】:2018-04-27 18:45:50
【问题描述】:

我试图在 c 代码中返回对变量的引用,但是这段代码:

int& f()
{
  static int l = 10;
  return l;
}

不通过 gcc 编译:

main.c:5:4: error: expected identifier or ‘(’ before ‘&’ token
int& f()

但是用 g++ 编译得很好。如何在 c 中实现这一点?

【问题讨论】:

  • C 和 C++ 是不同的语言。你不应该用一个来学习另一个。

标签: c gcc


【解决方案1】:

C 不知道引用是什么,所以它放弃了解析。

如果你在 C++ 模式下编译这个“C”代码,那么它会工作。

【讨论】:

    【解决方案2】:

    C 不支持引用。要执行类似的操作,您需要返回一个指针:

    int *f()
    {
      static int l = 10;
      return &l;
    }
    

    【讨论】:

      猜你喜欢
      • 2013-05-03
      • 1970-01-01
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      • 2011-02-06
      • 2020-08-20
      • 2014-08-28
      • 1970-01-01
      相关资源
      最近更新 更多