您的位置:首页 > 其它

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")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐