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

C++ Visual Studio中的冲突错误(C+;+;),c++,visual-studio,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. 及 我可以理解第二个

我的项目有一个函数“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.  

我可以理解第二个错误集,因为我已经定义了两次,但我不明白为什么当我删除重复的定义时它不起作用。非常感谢您的帮助

主文件

#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;
}  
#包括“stdio.h”
#包括
#包括“io.h”
void PrintHeader()
{

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

在标题中使用名称空间是一种非常糟糕的编码方式。io文件是为一个类分配而提供给我的,带有不修改它们的特定说明。但是很高兴知道我的指导者显然是无知的。--你是对的-看起来io.h是一个默认库。有办法吗要指定哪个IO h,不更改名称?对于我的作业,我不允许修改我使用的IO.CPP或IO.H文件。您很可能在IO.H文件中有不同于Me.cpp的文件夹。这就是为什么它从标准库中选择一个。@ Ranga-IO.H不是标准C或C++库的一部分。可能是有些编译器将其作为扩展提供。@ronag-Yep!它们一起出现在VS中,但当我在资源管理器中查看时,它们位于不同的目录中。将io文件复制到主目录修复了此问题。谢谢!
#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;
}  
#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;
}
#ifndef __IO_H__
#define __IO_H__

#include <string>
using namespace std;

void PrintHeader (void);

#endif