使用Winbase.h错误的解决

使用#include <Winbase.h> 中的Sleep函数

出现如下错误:

1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(226) : error C2146: 语法错误 : 缺少“;”(在标识符“Internal”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(226) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(226) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(227) : error C2146: 语法错误 : 缺少“;”(在标识符“InternalHigh”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(227) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(227) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(230) : error C2146: 语法错误 : 缺少“;”(在标识符“Offset”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(230) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(230) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(231) : error C2146: 语法错误 : 缺少“;”(在标识符“OffsetHigh”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(231) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(231) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(234) : error C2146: 语法错误 : 缺少“;”(在标识符“Pointer”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(234) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(234) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(237) : error C2146: 语法错误 : 缺少“;”(在标识符“hEvent”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(237) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(237) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(241) : error C2146: 语法错误 : 缺少“;”(在标识符“nLength”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(241) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(241) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(242) : error C2146: 语法错误 : 缺少“;”(在标识符“lpSecurityDescriptor”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(242) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(242) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(243) : error C2146: 语法错误 : 缺少“;”(在标识符“bInheritHandle”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(243) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(243) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(247) : error C2146: 语法错误 : 缺少“;”(在标识符“hProcess”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(247) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(247) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(248) : error C2146: 语法错误 : 缺少“;”(在标识符“hThread”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(248) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(248) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(249) : error C2146: 语法错误 : 缺少“;”(在标识符“dwProcessId”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(249) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(249) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(250) : error C2146: 语法错误 : 缺少“;”(在标识符“dwThreadId”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(250) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(250) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(261) : error C2146: 语法错误 : 缺少“;”(在标识符“dwLowDateTime”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(261) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(261) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(262) : error C2146: 语法错误 : 缺少“;”(在标识符“dwHighDateTime”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(262) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(262) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(272) : error C2146: 语法错误 : 缺少“;”(在标识符“wYear”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(272) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(272) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(273) : error C2146: 语法错误 : 缺少“;”(在标识符“wMonth”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(273) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(273) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(274) : error C2146: 语法错误 : 缺少“;”(在标识符“wDayOfWeek”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(274) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(274) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(275) : error C2146: 语法错误 : 缺少“;”(在标识符“wDay”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(275) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(275) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(276) : error C2146: 语法错误 : 缺少“;”(在标识符“wHour”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(276) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(276) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(277) : error C2146: 语法错误 : 缺少“;”(在标识符“wMinute”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(277) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(277) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(278) : error C2146: 语法错误 : 缺少“;”(在标识符“wSecond”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(278) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(278) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(279) : error C2146: 语法错误 : 缺少“;”(在标识符“wMilliseconds”的前面) 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(279) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(279) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(283) : error C2065: “WINAPI”: 未声明的标识符 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(283) : error C2065: “PTHREAD_START_ROUTINE”: 未声明的标识符 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(283) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int 
1>D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\Winbase.h(283) : fatal error C1903: 无法从以前的错误中恢复;正在停止编译

 

解决方法:

不能直接使用#include <Winbase.h>

应该改为#include <Windows.h>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的使用winbase.h头文件创建两个线程的程序,一个用于内存分配,一个用于跟踪内存的分配情况并打印信息。在程序中,我们使用了临界区来保护共享的内存数据结构,确保不会出现竞态条件。 ```c++ #include <windows.h> #include <iostream> #define MAX_MEM_SIZE 1024 // 最大内存大小 #define MEM_ALLOC_SIZE 128 // 内存分配大小 CRITICAL_SECTION cs; // 定义临界区 int mem_used = 0; // 已使用内存大小 int mem_free = MAX_MEM_SIZE; // 可用内存大小 // 内存分配线程函数 DWORD WINAPI AllocateMemory(LPVOID lpParam) { while (1) { // 加锁 EnterCriticalSection(&cs); if (mem_free >= MEM_ALLOC_SIZE) { // 分配内存 char* ptr = new char[MEM_ALLOC_SIZE]; mem_used += MEM_ALLOC_SIZE; mem_free -= MEM_ALLOC_SIZE; std::cout << "Allocated " << MEM_ALLOC_SIZE << " bytes of memory. Used: " << mem_used << ", Free: " << mem_free << std::endl; } // 解锁 LeaveCriticalSection(&cs); // 休眠一段时间 Sleep(1000); } } // 内存跟踪线程函数 DWORD WINAPI TrackMemory(LPVOID lpParam) { while (1) { // 加锁 EnterCriticalSection(&cs); std::cout << "Memory usage: Used " << mem_used << ", Free " << mem_free << std::endl; // 解锁 LeaveCriticalSection(&cs); // 休眠一段时间 Sleep(2000); } } int main() { // 初始化临界区 InitializeCriticalSection(&cs); // 创建内存分配线程 HANDLE hAllocThread = CreateThread(NULL, 0, AllocateMemory, NULL, 0, NULL); if (hAllocThread == NULL) { std::cerr << "Failed to create memory allocation thread." << std::endl; return 1; } // 创建内存跟踪线程 HANDLE hTrackThread = CreateThread(NULL, 0, TrackMemory, NULL, 0, NULL); if (hTrackThread == NULL) { std::cerr << "Failed to create memory tracking thread." << std::endl; return 1; } // 等待线程结束 WaitForSingleObject(hAllocThread, INFINITE); WaitForSingleObject(hTrackThread, INFINITE); // 删除临界区 DeleteCriticalSection(&cs); return 0; } ``` 在程序中,我们使用了两个无限循环的线程函数,一个用于内存分配,另一个用于跟踪内存分配情况并打印信息。在内存分配线程函数中,我们使用了new运算符来分配内存,并使用临界区来保护共享的内存数据结构。在内存跟踪线程函数中,我们只是简单地打印了当前的内存使用情况。 当程序运行时,我们可以看到输出的信息,它会不断地打印内存使用情况,并且每秒钟会分配128个字节的内存,直到达到最大内存大小为止。我们可以尝试调换分配、回收、内存复位、加锁、解锁、提交、回收的次序,查看结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值