5

我有这个函数,它应该为给定的 char* 设置某种时间格式:

static void timeStamp(char* time)
{
  time(&strTime);<---ERROR
  curTime = std::localtime(&strTime);
  strftime(time, 8, "%H:%M::", curTime);    
}

strTime 和 curTime 声明如下:

tm* curTime; 
time_t strTime;

但由于某种原因,我得到:

called object type 'char*' is not a function or function pointer

在标记的地方。

知道为什么吗?

顺便说一句,我正在使用 xCode。

4

6 回答 6

12

您的函数参数time是指向 char 的指针。

但是,在您的函数体中,如果它是您可以调用的函数,您会尝试对其进行处理。这就是错误所说的......

类型的对象char *不是函数或函数指针[因此,我不能调用它!]

本质上,您time通过使用同名的局部变量来隐藏函数。我建议更改函数参数的名称。

于 2012-06-20T12:27:30.217 回答
5

功能参数

static void timeStamp(char* time)
{
  time(&strTime);<---ERROR
  // ...
}

阴影time()功能。重命名参数。

于 2012-06-20T12:27:24.557 回答
2
static void timeStamp(char* time)  

在这里,这个char* time参数隐藏了函数time()。你需要重命名它。

于 2012-06-20T12:29:59.060 回答
1

该函数 time也是要运行的参数的名称timeStamp。编译器尝试像调用函数一样调用 char* 参数。

于 2012-06-20T12:27:14.287 回答
1

您已经重新定义了符号time,要修复,请尝试以下操作:

static void timeStamp(char *time)
{
    time_t strTime;

    { // brackets here are important!
        extern time_t time(time_t *);
        time(&strTime);
    }

    // ...
}

我们在此处添加括号以向函数添加额外的范围,然后我们告诉编译器hey, in this block, time is not a variable, its a function, 并且允许编译器也可以使用您当前的变量名正常工作。

或者,您还可以使用全局命名空间说明符,如下所示:

static void timeStamp(char *time)
{
    ::time(&strTime);
    // ...
}
于 2012-06-20T12:27:34.193 回答
0

因为timechar*你不能调用的 - 查看你的参数列表。

只需重命名它,您的问题就会消失。

于 2012-06-20T12:27:15.883 回答