碰到过一个问题,代码如下:

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main (int argc, char ** argv) {
time_t now = time(NULL);
char * ctime = ctime(&now);
printf("%s \n", ctime);
return 0;
}

编译后提示出错:
error.img

called object type ‘char *’ is not a function or function pointer

一直以为是调用ctime()函数时参数没有填写正确。后来google了下,已经有人问过了,链接详情

原因是:当前代码已经先对ctime定义为char *了,在后续的代码中又要把ctime作为函数来处理(虽然是#include <time.h>中的函数),所以在预编译函数体这里会提示ctime是个char *而现在又要把它当作函数并传入参数,臣妾做不到呀.. ╮(╯_╰)╭

这个案例也提示c coder,在对变量或参数起名时,要避免和函数名一致。