VC编译错误:'waveformat_tag' : 'struct' type redefinition
2011-04-07 19:33
423 查看
错误信息:
: error C2011: 'waveformat_tag' : 'struct' type redefinition
: error C2011: 'pcmwaveformat_tag' : 'struct' type redefinition
: error C2061: syntax error : identifier 'LPCWAVEFORMATEX'
: error C2061: syntax error : identifier 'LPCWAVEFORMATEX'
解决方法:
这是头文件包含顺序不正确所致。原先的文件包含顺序为:
#include <mmreg.h>
#include <mmsystem.h>
#include <msacm.h>
可以看到,mmreg.h文件中有如下定义:
#ifndef WAVE_FORMAT_PCM
typedef struct waveformat_tag ××××
而WAVE_FORMAT_PCM在mmsystem.h中有定义,但是在#include <mmreg.h>之前,WAVE_FORMAT_PCM还是没有被定义,所以,typedef struct waveformat_tag ××××语句生效,之后mmsystem.h中再次定义waveformat_tag,于是出现重复定义。
正确的包含顺序是:
#include <mmsystem.h>
#include <mmreg.h>
#include <msacm.h>
(包含静态库)
#pragma comment(lib, "winmm.lib")
#pragma comment(lib, "Msacm32.lib")
: error C2011: 'waveformat_tag' : 'struct' type redefinition
: error C2011: 'pcmwaveformat_tag' : 'struct' type redefinition
: error C2061: syntax error : identifier 'LPCWAVEFORMATEX'
: error C2061: syntax error : identifier 'LPCWAVEFORMATEX'
解决方法:
这是头文件包含顺序不正确所致。原先的文件包含顺序为:
#include <mmreg.h>
#include <mmsystem.h>
#include <msacm.h>
可以看到,mmreg.h文件中有如下定义:
#ifndef WAVE_FORMAT_PCM
typedef struct waveformat_tag ××××
而WAVE_FORMAT_PCM在mmsystem.h中有定义,但是在#include <mmreg.h>之前,WAVE_FORMAT_PCM还是没有被定义,所以,typedef struct waveformat_tag ××××语句生效,之后mmsystem.h中再次定义waveformat_tag,于是出现重复定义。
正确的包含顺序是:
#include <mmsystem.h>
#include <mmreg.h>
#include <msacm.h>
(包含静态库)
#pragma comment(lib, "winmm.lib")
#pragma comment(lib, "Msacm32.lib")
相关文章推荐
- VC编译错误:'waveformat_tag' : 'struct' type redefinition
- VC编译C代码时错误“ syntax error : missing ';' before 'type' ”
- Must use 'struct' tag to refer to type 'tagCommonUserInfo'
- 两个C++编译错误及解决办法--does not name a type和field `XX' has incomplete type
- QT编译报错: 错误:'Qt::CaseSensitive' is not a type
- 两个C++编译错误及解决办法--does not name a type和field `XX' has incomplete type
- 编译错误syntax error : missing ';' before 'type'
- iOS编译错误:Property cannot have array or function type 'Block' (aka 'void (XXXXView *__st
- 在VC中使用switch语句时遇到“error C2360: initialization of 'k' is skipped by 'case' label”的编译错误。
- VC++ 2005中编译C出错:error C2143: syntax error : missing ';' before 'type'
- Debug编译运行都没有问题,Release编译错误error C2664: 'ATL::CStringT<BaseType,StringTraits>::CStringT(const VARIANT
- VC编译错误:error C2065: 'strcpy_instead_use_StringCbCopyA_or_StringCchCopyA' : undeclared
- 'FILE' : illegal use of this type as an expression编译错误的解决
- error C2011: 'fd_set' : 'struct' type redefinition 的原因(转)
- 解决编译错误:Property 'value' not found on object of type '_strong id'
- VC编译错误:msvcrtd.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class typ
- 两个C++编译错误及解决办法--does not name a type和field `XX' has incomplete type
- 编译VTK6.1.0在vtkGUISupportQt-6.1.dll项上出现错误'GLdouble' : redefinition的解决方法
- VC编译程序时Cannot open precompiled header file: 'Debug/.pch': No such file or directory错误处理
- 编译错误syntax error : missing ';' before 'type'原因探寻