请教大家VC中有关头文件引用的两个问题,请各位大虾指点一二!(50分)

  • 主题发起人 Archerfl
  • 开始时间
A

Archerfl

Unregistered / Unconfirmed
GUEST, unregistred user!
1.我新建了一个Console程序,然后新建了一个cpp文件,然后在cpp文件中定义如下代码:
typedef struct _GUID GUID;
//HRESULT m;
void main()
{
}
这时编译可通过,但是假如把注释去掉就会报错。而且,这两个数据类型struct _GUID和HRESULT的定义头文件均为winnt.h 。但是,注意我这里并没有引用任何头文件,为什么编译器仍然会通过我对typedef struct _GUID GUID;的定义呢?而同在一个头文件中的HRESULT m;的定义就不可以?
2.PlaySound的头文件引用问题?
如上所述仍然新建一个Console程序,然后新建一个cpp文件。
这里API函数PlaySound的头文件为MMSystem.h,但是当我在程序头引用该头文件的时候,会报告有两个错误,而且错误的位置均在该头文件中,不知道这是为什么呢?
程序代码如下:
#include "MMSystem.h"
void main()
{
PlaySound(... ...
}
请各位大虾指点,谢!
 
请说得详细一点,最好把头文件和实现文件一起列出来
 
typedef struct _GUID GUID;
只是把 struct _GUID 定义为 GUID,
改成 typedef struct _G GUID;
说不定也是通过的。
第二行是变量声明,因为没有相应的类型定义,所以会出错。

MMSystem.h 应该是 windows 程序下的多媒体功能模块,
可能在 console 程序中是不能用。
 
1.同意jsxjd,还是要 #include "winnt.h" 
2.报什么错?
 
to jsxjd:
但是,我在Win32 Application下如果加上这个头文件的话,报的错更多,有42处!
第2个问题,报的错误是:
d:/visual c++ 6.0/vc98/include/mmsystem.h(117) : error C2146: syntax error : missing ';' before identifier 'MMRESULT'
d:/visual c++ 6.0/vc98/include/mmsystem.h(117) : fatal error C1004: unexpected end of file found
不知道是为什么?
 
1.需要你自己去分析了
2.可以把代码贴出来。
 
你的头文件是不是 VC++ 的头文件?
 
我的代码:
新建一个Win32控制台程序:工程中只有一个cpp文件,没有头文件
#include "stdafx.h"
//#include "MMSystem.h"
int main(int argc, char* argv[])
{
return 0;
}
如上,可以正常运行,但是假如去掉注释,就会报两处错误,错误的提示信息如上面我的贴
子所述!
 
UINT没有定义。
在#include "MMSystem.h"加一个#include "windows.h"就可以了。
#include "windows.h"
#include "MMSystem.h"
要学会自己分析原因。
 
to zw84611:
  我加上了您提到的头文件windows.h,但是这次报的错误更多了,有42处,不知道这次
又是为什么呢?
 
把你的代码全部贴出来。
 
新建一个Win32控制台程序:工程中只有一个cpp文件,没有头文件
#include "stdafx.h"
//#include "windows.h"
//#include "MMSystem.h"
int main(int argc, char* argv[])
{
return 0;
}
如上,可以正常运行,但是假如去掉注释,就会报42处错误!
 
我的和你一样,怎么没有报错?
rebuild all
 
to zw84611:
  感觉您的回答,是我的VC有问题了,我在其他人的机子上测试正常,从新安装了VC后我的
也通过了!散分!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
563
import
I
I
回复
0
查看
735
import
I
顶部