称为对象 'char* '类型不是函数或函数指针
called object 'char* 'type is not a function or function pointer
我有这个函数,它应该为给定的字符*设置一定的时间格式:
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。
函数参数time
是指向字符的指针。
但是,在您的函数体中,如果它是您可以调用的函数,您将尝试处理它。这就是错误所说的...
类型
char *
的对象不是函数或函数指针 [因此,我不能调用它!
从本质上讲,您通过具有相同名称的局部变量隐藏了time
函数。我建议更改函数参数的名称。
函数参数
static void timeStamp(char* time)
{
time(&strTime);<---ERROR
// ...
}
隐藏time()
函数。重命名参数。
static void timeStamp(char* time)
在这里,这个char* time
参数隐藏了函数time()
.您将需要重命名它。
您已重新定义符号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);
// ...
}
函数time
也是函数timeStamp
参数的名称。编译器尝试调用 char* 参数,就好像它是一个函数一样。
因为time
是不能调用的char*
- 请查看参数列表。
只需重命名它,您的问题就会消失。
相关文章:
- QMetaObject invokeMethod的基于函数指针的语法
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- c++r值引用应用于函数指针
- 模板函数指针和lambda
- 是否可以将llvm::FunctionType转换为C/C++原始函数指针
- 带有类的函数指针
- () 函子后面的括号,而不是函数指针?
- 全局作用域中函数指针的赋值
- 使用"Task"函数指针队列定义作业管理器
- 将成员函数指针作为参数传递给模板方法
- 如何创建对象函数指针C++映射?
- 匹配函数指针作为模板参数?
- 通过函数指针定义类范围之外的方法
- 存储在类中的函数指针
- C++从函数指针数组调用函数
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 整数键映射到头文件中的成员函数指针
- 从类成员函数到类 C 函数指针的转换
- 如何将内联匿名函数分配给C++函数指针
- 将字符缓冲区强制转换为函数指针