C++代言人 2023-12-24 15:24 采纳率: 33.3%
浏览 10
已结题

自制头文件中函数出错

想自定义一个叫做xout.h的头文件,报错了,代码如下

头文件代码(.h)

#include<windows.h>
#include<iostream> 
using namespace std;
void waitout(char a[100],int m)
{
    for(int i=0;a[i]!=0;i++)
    {
        Sleep(m);
        printf("%c",a[i]);
    }
}

源文件代码(.cpp)

#include"xout.h"
#include<iostream>
using namespace std;
int main()
{
    char a[]="嘎,嘎,嘎,我是一只鸭子。";
    waitout(a,100);
     return 0;
}

报错信息

报错信息:

74    25    C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++\iostream    [Error] redefinition of 'std::ios_base::Init std::__ioinit'

报错代码:

  static ios_base::Init __ioinit;

这串代码删掉之后我的函数就可以正常执行,但是所有的cin、cout、wcout、wcin、getline等输入输出代码全部瘫痪了

谁能解决一下,急!

注:编译报错后直接跑到了头文件iostream里

  • 写回答

1条回答 默认 最新

  • VijaySu 2023-12-25 01:08
    关注

    iostream库被重复包含了,所以函数发生重定义,去掉cpp文件中include iostream的语句就可以了。不过头文件一般都是会宏定义禁止重复引用的,你的iostream库是不是动过?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月2日
  • 已采纳回答 12月25日
  • 修改了问题 12月24日
  • 创建了问题 12月24日