C语言:在VS环境下因#include<*.c/.cpp>所产生的LNK2005及LNK1169错误及解决办法
前言(可跳过)
今天在编写某个数据处理程序时,因为代码行数过多影响阅读和编写,所以想将一部分基础处理函数移至另一文件中。理想很丰满,现实很骨感,我将部分函数从a.cpp(化名)移至b.cpp(化名),然后在a.cpp的开头加上#include<b.cpp>,以及相应的extern 函数名(变量);后,进行调试,就立刻出错了,分别是LNK2005及LNK1169。检查了半天,根本就没有发现什么错误,也没有变量重复定义,真是坑人。
问题描述
在文件引用中含有#include<.cpp或者.c文件>,并且被引用文件中含有函数。编译器在链接时产生LNK2005及LNK1169错误,某函数已经在*.obj中定义以及找到一个或多个多重定义的符号。
程序部分情况:
直接引用(包含).c或.cpp文件
且两者处于同一项目内(废话)
且被包含文件中有函数