Visual Studio中的冲突错误(C ++)

时间:2012-09-09 16:38:37

标签: c++ visual-studio

我的项目有一个函数“PrintHeader”,在io.cpp中定义。即使io.h包含在我的主文件中,我也会收到错误

error C3861: 'PrintHeader': identifier not found.

当我将PrintHeader的功能复制到我的主文件中时,我收到错误

error LNK2005: 'void _cdeci PrintHeader(void)" (?PrintHeader@@YAXXZ) already defined in io.obj.  

error LNK1169: one or more multiply defined symbols found.

我可以理解第二个错误集,因为我确实已经定义了两次,但我不明白为什么当我删除重复的定义时它不起作用。任何帮助是极大的赞赏。

主档

#include "stdio.h"
#include <iostream>
#include "io.h"

void PrintHeader()
{
    cout << endl;
    cout << "Month\tPrincipal\t Interest\t  Balance" << endl;
    cout << "-----\t---------\t---------\t---------" << endl;
}
int main()
{
    cout << "Hello World\n";
    PrintHeader();
    getchar();
    return 0;
}  

io.cpp

#include <iostream>
#include <iomanip>
#include "io.h"

void PrintHeader (void)
{
    cout << endl;
    cout << "Month\tPrincipal\t Interest\t  Balance" << endl;
    cout << "-----\t---------\t---------\t---------" << endl;
}

io.h

#ifndef __IO_H__
#define __IO_H__

#include <string>
using namespace std;

void PrintHeader (void);

#endif

1 个答案:

答案 0 :(得分:2)

您最有可能在main.cpp中包含错误的文件。您可以通过右键单击include "io.h"并选择打开文件来确保它是正确的文件。