C语言链接错误:undefined reference to 'delete'问题求助
解决 "undefined reference to 'delete'" 链接错误
这个问题的核心原因很明确:delete是C++的关键字,当你用C编译器(比如g++)编译这段代码时,编译器会把delete识别成C里的内存释放运算符,而不是你自己定义的函数名。这就导致链接阶段找不到你写的delete函数实现,从而抛出这个错误。
快速解决方案
最直接的办法是把你的函数名改成一个不与关键字冲突的合法标识符,比如delete_patient或者remove_node:
修改函数声明、定义和调用处的名称:
// 函数声明 head* delete_patient(head *header); // main函数里的调用 if (option == 2) { header = delete_patient(header); continue; } // 函数定义 head* delete_patient(head *header){ // 这里写你的实现逻辑 }额外提醒:你的代码里还有一个小错误——调用
questions函数时不需要写返回类型void,应该改成:if(option == 3){ questions(header); }
补充说明
如果你确实想使用纯C语言编译这段代码(用gcc而不是g++),delete并不是C语言的关键字,理论上可以作为函数名,但这依然是非常糟糕的编程习惯——会让阅读代码的人困惑,也容易在后续切换编译环境时再次出现问题。所以强烈建议还是修改函数名。
内容的提问来源于stack exchange,提问作者Adam Jean-Laurent
相关产品推荐
相关产品推荐

