注:
1.顺序按照由易到难
2.使用的ide为VS
3.都是实际开发中遇到的问题以及解决方法,仅供参考
4.欢迎补充
未定义报错
1. 仅仅进行了声明,未进行定义
2.已定义,检查实现文件,可能是实现文件中的头文件包含错误,导致编译器为成功链接
3.检查项目文件.vcxproj,
所有的头文件需要使用ClInclude
<ClInclude Include="deps\hiredis\adapters\ae.h" />
所有的实现文件需要使用ClCompile
<ClCompile Include="src\tio.cpp" />
vcxproj文件是自动生成和更新的,为了避免3造成的错误,请不要随意的将.cpp更成.h,反之同样成立。
如果已经修改,有两种方式可以修改vcxproj文件:1.直接在文件资源管理器中找到vcxproj文件使用记事本进行修改(不推荐,容易改错)2.利用自动更新的特性,在ide中排除项目文件,然后再将其包含进来,vcxproj文件会自动更新。
多重定义报错
1. 同一个函数多次在同一个文件或是不同的文件中定义
2.文件间循环依赖
在这种情况下 预编译指令#ifndef... 同样不起作用,唯一的方式就是解耦,或者使用前向声明注意使用前向声明时,如果涉及到对类或结构体的具体操作同样会报错(类型不完整), 这时唯一的方式就是解耦。
3.同一个文件被包含多次
在文件头使用#pragma once 和预编译指令 #ifndef #endif
4.文件重名
同一个文件夹下的文件重名是致命的
不同文件夹下的文件重名也是致命的,即使在指定文件路径的情况下,编译器仍有可能会报错