Der*_*son 1 c arrays struct pointers
我正在将一个程序从 Pascal 翻译成 C。我已经很多年没有使用 C 语言了。这是相关的代码片段:
typedef struct querec *queptr;
struct querec {
char item;
queptr next;
};
struct queue {
queptr front,
rear;
};
struct queue qnum[5];
char item;
const char remove(struct queue *q)
{
queptr p;
char remove_result;
p = q->front;
remove_result = p->item;
q->front = p->next;
if (q->front == NULL)
q->rear = NULL;
return remove_result;
}
main()
{
...
item = remove(&qnum[3]);
}
Run Code Online (Sandbox Code Playgroud)
它不会在 Visual Studio 2015 中编译,报告以下内容:
Warning C4133 'function': incompatible types - from 'queue *' to 'const char *'
Error C2373 'remove': redefinition; different type modifiers
Run Code Online (Sandbox Code Playgroud)
C语言没有函数重载,而且恰好int remove(const char*)是标准C库函数。
要修复该错误,您需要以其他方式调用您的函数,例如queue_remove。
请注意,当编译器给出这样的错误时,它通常会输出附加信息,显示冲突的定义。在这种情况下,它应该向您显示在相关内部文件remove中声明的内容。stdio.h尽管感觉信息过多,但花时间仔细阅读该消息总是值得的。