【问题标题】:error: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token错误:在“&”标记之前应为“;”、“,”或“)”
【发布时间】:2012-10-05 22:14:32
【问题描述】:

我在这一行的 C 头文件中收到此错误:

char * getFechaHora(time_t & tiempoPuro);

在 C 源代码文件中,我包含头文件并为函数提供实现

char * getFechaHora(time_t &tiempoPuro){...}

在我的头文件中,我也正确地包含了“time.h”库。

【问题讨论】:

  • 让我再次声明:C/C++ 不是一种语言。
  • C 仅按值传递。如果你想改变传递给函数的变量的值,你必须传递一个指向它的指针。

标签: c gcc token


【解决方案1】:
char * getFechaHora(time_t & tiempoPuro);

这不是 C。C 没有引用 (&)。

【讨论】:

    【解决方案2】:

    在 C 中,如果 char * getFechaHora,这是您的函数,而两个 (time_t & tiempoPuro) 是参数,您应该将函数声明为:

    char * getFechaHora(*type* time_t, *type* tiempoPuro);
    

    如果第二个是变量,则声明为

    char * getFechaHora(time_t *tiempoPuro);
    

    【讨论】:

      【解决方案3】:

      问题在于您使用了& 符号。 C 不支持以这种方式通过引用传递。要在 C 中完成此操作,您需要像这样传递指向变量的指针:

          char * getFechaHora(time_t * tiempoPuro);
      

      从技术上讲,您仍然是按值传递(传递指针的值),但它会完成同样的事情(将 tiempoPuro 变量指向的值修改为 getFechaHora 函数的本地变量将更改值调用它的函数的局部变量)。

      参考:Pass by Reference

      【讨论】:

        猜你喜欢
        • 2014-01-16
        • 2016-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多