Xcode无法识别同目录下的PrecondViolatedExcep.h头文件该如何解决?
问题解决步骤
一、解决PrecondViolatedExcep.cpp无法识别头文件的问题
- 检查
PrecondViolatedExcep.cpp中的头文件引入语句,确保使用双引号而非尖括号:
尖括号会让Xcode优先搜索系统头文件路径,双引号才会优先查找当前目录。#include "PrecondViolatedExcep.h" - 给
PrecondViolatedExcep.h添加头文件保护,避免重复包含导致的识别异常:#ifndef PRECOND_VIOLATED_EXCEP_H #define PRECOND_VIOLATED_EXCEP_H // 头文件原有内容,比如异常类的声明 #endif // PRECOND_VIOLATED_EXCEP_H - 清理Xcode缓存并重启:点击菜单栏
Product->Clean Build Folder,之后关闭并重新打开Xcode。
二、解决链接错误(Undefined Symbols)
- 确认
PrecondViolatedExcep.cpp已加入项目编译目标:- 选中Xcode左侧项目导航栏的项目文件
- 切换到
Build Phases标签页 - 查看
Compile Sources列表,确认该cpp文件在其中。如果没有,点击+按钮将其添加进去。
- 检查异常类的声明与实现签名是否完全匹配:
比如头文件中声明的虚函数virtual const char* what() const noexcept;,在cpp文件中必须对应实现为:
注意参数、const修饰符、noexcept关键字必须完全一致,否则链接器会认为找不到对应实现。const char* PrecondViolatedExcep::what() const noexcept { // 实现代码 } - 恢复
QueueInterface.h中的#include "PrecondViolatedExcep.h"语句:
该头文件如果依赖这个异常类,注释掉必然会引发更多编译错误,确保引入路径正确即可。
内容的提问来源于stack exchange,提问作者travis huang
相关产品推荐
相关产品推荐

