我在一个头文件中声明了一个函数为
void waveOutErrorMsg(MMRESULT mmr,char* szTitle);
如果我不在这个头文件中不用
#include "mmsystem.h"
则会报下面的错误
error C2065: 'MMRESULT' : undeclared identifier如果用了#include "mmsystem.h"
则会报下面的错误
c:\program files\microsoft visual studio\vc98\include\mmsystem.h(694) : error C2011: 'waveformat_tag' : 'struct' type redefinition
还有好多重复声明的错误是不是我哪里的设置有问题呀?谢谢大家帮忙

解决方案 »

  1.   


    #ifndef xxxxx
    #define xxxxx
    ........
    头文件内容
    ........
    #endif
    来避免重复加载了吗?
      

  2.   

    可能是MFC与mmsystem.h中定义重复,我也碰到过类似的问题。
    试试在包含MMRESULT的cpp中去掉#include "stdafx.h"
      

  3.   

    同意楼上的观点。你的mmsystem.h"文件是自己写的吧,其中定义了类型MMRESULT。请在每个自己写的头文件中写上予编译指令,即在头部写上:#ifndef _MMRESULT_INCLUDE
    #define _MMRESULT_INCLUDE...最后再写上
    #endif这样子,你就可以放心地随意加上#include "mmresult.h"了。编译器会保证不重复加载已尼加载过的头文件。
      

  4.   

    但mmsystem.h是系统的呀
    是这样的,我这个头文件是需要依赖winmm.lib库的
    而我看别人用这个头文件中什么都没包括
    而我用这个头文件就报了error C2065: 'MMRESULT' : undeclared identifier
    我想时程序设置的问题吧
      

  5.   


    #ifndef xxxxx
    #define xxxxx
    ........
    头文件内容
    ........
    #endif
    来避免重复加载
      

  6.   


    #ifndef xxxxx
    #define xxxxx
    ........
    头文件内容
    ........
    #endif
    来避免重复加载
      

  7.   

    /*------------------------------------------------------------------------------*\
     =============================
       模块名称: waveout.h
     ============================= [目的]
     
         方便waveOutXXX函数族的使用,使其对象化     
            
     [描述]

    该模块包括CWaveOut类,这是个封装了录音操作的类。   
     
     [用法]
       
        此类是基础类,建议不要直接使用该类
     
     [依赖性]

     Winmm.lib  [修改记录]
     
      版本:    1.01.01
      日期:    01-11-1         
      作者:    Brant Q
      备注:
                                                    
    \*------------------------------------------------------------------------------*/
    #ifndef _WAVEOUT_H_
    #define _WAVEOUT_H_
    void waveOutErrorMsg(MMRESULT mmr,char* szTitle);class CWaveOut
    {
    public:
    BOOL CloseDev();
    void SetLastMMError(MMRESULT mmr);
    MMRESULT GetLastMMError();

    virtual  ~CWaveOut(); CWaveOut();

    BOOL OpenDev(WAVEFORMATEX* pfmt,DWORD dwCallback,DWORD dwCallbackInstance,DWORD fdwOpen);
    operator HWAVEOUT() const;
    protected: MMRESULT m_mmr; HWAVEOUT m_hOut;
    };
    #endif这是我用的头文件,是别人的共享代码,肯定不会有错的
    我想就是我的设置有问题
    我还看见别人的程序中在FileView中External Dependencies中出现了好多头文件
    不知是怎么加进去的
      

  8.   

    MMRESULT not defination, or you arn't include thie header file.
      

  9.   

    我认为不是你的waveout.h头文件有问题,也不是系统设置问题。而是在引用waveout.h的.cpp(或.h)文件中在#include "waveout.h"之前应该还有包含的头而你没有包含。即你的.cpp中应该这样:
        #include "xxxx.h"          //该头文件包含了MMRESULT的定义
      #include "waveout.h"