蓝牙API的问题

同样的问题:

http://social.msdn.microsoft.com/Forums/zh-CN/visualcpluszhchs/thread/7d06eb88-36aa-41bb-8485-b1e75c65e02f/

=========================================================================================

VS2008SP1

 

在使用蓝牙API的时候 出现这个错误

 

1>c:\program files\microsoft sdks\windows\v6.0a\include\bluetoothapis.h(1575) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\program files\microsoft sdks\windows\v6.0a\include\bluetoothapis.h(1575) : error C2143: 语法错误 : 缺少“,”(在“*”的前面)‘

 

DWORD
WINAPI
BluetoothSetLocalServiceInfo(
      __in_opt HANDLE  hRadioIn
    , __in const GUID * pClassGuid
    , ULONG ulInstance
    , const BLUETOOTH_LOCAL_SERVICE_INFO * pServiceInfoIn //指向这里
    );

 =========================================================================================

解决方法:

Hi dowflyon,

>> error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

1. (此情况经常出现在大型工程项目中)如果存在两个类的头文件a.hb.h,a.h中有这样的语句:#include "b.h",b.h文件中有这样的语句:#include "a.h"   且在一个类中有另一个类的对象时   那么就会出现这样的错误。

2. 没有包含要定义的类的头文件。

3.项目中少加了宏定义,导致头文件重复定义或相应宏无法识别。

4.当有多个头文件时,顺序写反也可能导致相关的错误,其根本是头文件中的预编译语句被隐去了。

e.g

#include <stdio.h>

#include <Windows.h>

#include <WinCrypt.h>

#include <string.h>

如果把第二个和第三个写反,一个宏定义就被#if给注了,就会出现类似错误

>> error C2143: 语法错误 : 缺少“,”(“*”的前面)‘

绝大多数的情况是因为头文件引用造成的;同样,在同一个文件中,不同类的顺序也会造成这样的错

具体请看:http://msdn.microsoft.com/en-us/library/0afb82ta(v=VS.90).aspx

我的解决方法:

看了上面的答案,在bluetoothapis.h中看到了#if (NTDDI_VERSION >= NTDDI_WINXPSP2),如果NTDDI_VERSION 小于NTDDI_WINXPSP2则会出现其中结构体等的定义无效,所以在引用bluetoothapis.h的时候,要在前面加上一个NTDDI_VERSION的定义

如:#define NTDDI_VERSION   0x06000000 ,其中#define NTDDI_WINXPSP2                      0x05010200

问题解决了


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值