我有这个函数,它应该为给定的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。
答案 0 :(得分:12)
您的函数参数time
是指向char的指针。
但是,在您的函数体中,如果它是您可以调用的函数,则会尝试对其进行处理。这就是错误所说的......
char *
类型的对象不是函数或函数指针[因此,我无法调用它!]
基本上,您通过使用同名的本地变量隐藏了time
函数。我建议您更改功能参数的名称。
答案 1 :(得分:5)
功能参数
static void timeStamp(char* time)
{
time(&strTime);<---ERROR
// ...
}
隐藏time()
功能。重命名参数。
答案 2 :(得分:2)
static void timeStamp(char* time)
这里,这个char* time
参数隐藏了函数time()
。您需要重命名它。
答案 3 :(得分:1)
函数time
也是timeStamp
函数的参数名称。编译器尝试将char *参数调用为函数。
答案 4 :(得分: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);
// ...
}
答案 5 :(得分:0)
由于time
是您无法调用的char*
,请查看您的参数列表。
只需将其重命名,您的问题就会消失。