BOOL未被识别为数据类型(C…?)
我正试图用Visual Studio 2015 Enterprise从源代码编译一个应用程序。我遇到了一些问题 当我尝试编译时,我得到了几个与BOOL是未定义类型相关的错误。我尝试过包含winmindef.h和windef.h,但没有效果。下面是代码中引发错误的一些函数声明:BOOL未被识别为数据类型(C…?),c,C,我正试图用Visual Studio 2015 Enterprise从源代码编译一个应用程序。我遇到了一些问题 当我尝试编译时,我得到了几个与BOOL是未定义类型相关的错误。我尝试过包含winmindef.h和windef.h,但没有效果。下面是代码中引发错误的一些函数声明: void GetCheatName ( int CheatNo, char * CheatName, int CheatNameLen ); BOOL LoadCheatExt ( ch
void GetCheatName ( int CheatNo, char * CheatName, int CheatNameLen );
BOOL LoadCheatExt ( char * CheatName, char * CheatExt, int MaxCheatExtLen);
void RefreshCheatManager ( void );
void SaveCheatExt ( char * CheatName, char * CheatExt );
BOOL TreeView_GetCheckState(HWND hwndTreeView, HTREEITEM hItem);
BOOL TreeView_SetCheckState(HWND hwndTreeView, HTREEITEM hItem, BOOL fCheck);`
当我在.h文件中包含以下内容时,问题仍然没有得到解决
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
typedef int BOOL;
如果有帮助的话,我正在尝试编译PJ64,可能需要更改一些设置才能编译,但我不确定是哪个
感谢您的帮助
---更新---
以下是完整的编译错误(我省略了大部分警告):
1>cl:命令行警告D9007:“/Gm”需要“/Zi或/Zi”;选项被忽略
1> 作弊
1> Cheat.c(55):错误C2059:语法错误:“”
1> Cheat.c(56):错误C2059:语法错误:'{'
1> Cheat.c(233):警告C4267:“=”:从“大小”转换为“字”,可能会丢失数据
1> Cheat.c(326):警告C4267:“=”:从“大小”转换为“字”,可能会丢失数据
1> Cheat.c(346):警告C4267:“=”:从“大小”转换为“字”,可能会丢失数据
1> Cheat.c(982):错误C2059:语法错误:“”
1> Cheat.c(998):错误C2059:语法错误:'{'
1> Cheat.c(999):错误C2449:在文件范围内找到“{”(缺少函数头?)
1> Cheat.c(1012):错误C2059:语法错误:'}'
我试图编译的项目的完整代码可以找到
这是编译并抛出上述错误的代码的一部分。我遗漏了绝大多数代码,因为它太长,无法包含在这里。我留下了注释,指出哪些行抛出了错误
#include <Windows.h>
#include <windowsx.h>
#include <commctrl.h>
#include <windef.h>
#include <stdio.h>
#include "main.h"
#include "cheats.h"
#include "cpu.h"
#include "resource.h"
#define UM_CHECKSTATECHANGE (WM_USER + 100)
#define UM_CHANGECODEEXTENSION (WM_USER + 101)
#define IDC_MYTREE 0x500
#define MaxCheats 300
#define SelectCheat 1
#define EditCheat 2
#define NewCheat 3
HWND hManageWindow = NULL;
HWND hSelectCheat, hAddCheat, hCheatTree;
CHEAT_CODES Codes[MaxCheats];
int NoOfCodes;
void GetCheatName ( int CheatNo, char * CheatName, int CheatNameLen );
BOOL LoadCheatExt ( char * CheatName, char * CheatExt, int MaxCheatExtLen);
void RefreshCheatManager ( void );
void SaveCheatExt ( char * CheatName, char * CheatExt );
BOOL TreeView_GetCheckState(HWND hwndTreeView, HTREEITEM hItem); //(line 55, error thrown.)
BOOL TreeView_SetCheckState(HWND hwndTreeView, HTREEITEM hItem, BOOL fCheck); //(line 56)
LRESULT CALLBACK ManageCheatsProc (HWND, UINT, WPARAM, LPARAM );
void ApplyCheats (void) {
//lots 'o code
}
BOOL CheatActive (char * Name) {
//more code
}
LRESULT CALLBACK CheatsCodeExProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
//Too much code to contain in this post...
}
LRESULT CALLBACK CheatsCodeQuantProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
//code
}
//Because of the inmensity of code, I will skip to the lines that throw errors.
BOOL TreeView_GetCheckState(HWND hwndTreeView, HTREEITEM hItem) { //line 982, error thrown.
//code here
}
BOOL TreeView_SetCheckState(HWND hwndTreeView, HTREEITEM hItem, BOOL fCheck) //line 999, error thrown
{ //line 1000, error thrown
//Lots o code
} // line 1013, error thrown
#包括
#包括
#包括
#包括
#包括
#包括“main.h”
#包括“作弊,h”
#包括“cpu.h”
#包括“resource.h”
#定义UM_CHECKSTATECHANGE(WM_用户+100)
#定义UM_CHANGECODEEXTENSION(WM_用户+101)
#定义IDC_MYTREE 0x500
#定义MaxCheats 300
#定义SelectCheat 1
#定义编辑作弊2
#定义新作弊3
HWND-hManageWindow=NULL;
HWND hSelectCheat、hAddCheat、hCheatTree;
作弊代码[最大作弊];
内部节点代码;
void GetCheatName(int-CheatNo,char*CheatName,int-CheatNameLen);
BOOL LoadCheatExt(char*CheatName,char*CheatExt,int-MaxCheatExtLen);
无效经理(无效);
void SaveCheatExt(char*CheatName,char*CheatExt);
BOOL TreeView_GetCheckState(HWND hwndTreeView,HTREEITEM hItem);/(第55行,抛出错误。)
BOOL TreeView_SetCheckState(HWND hwndTreeView,HTREEITEM hItem,BOOL fCheck);/(第56行)
LRESULT回调管理器存储过程(HWND、UINT、WPARAM、LPARAM);
无效应用程序加热(无效){
//lots'o代码
}
BOOL CheatActive(字符*名称){
//更多代码
}
LRESULT回调作弊SCodeExproc(HWND hDlg、UINT uMsg、WPARAM WPARAM、LPARAM LPARAM){
//此帖子中包含的代码太多。。。
}
LRESULT回调作弊代码QUANTPROC(HWND hDlg、UINT uMsg、WPARAM WPARAM、LPARAM LPARAM){
//代码
}
//由于代码的复杂性,我将跳到抛出错误的行。
BOOL TreeView_GetCheckState(HWND hwndTreeView,HTREEITEM hItem){//第982行,抛出错误。
//代码在这里
}
BOOL TreeView_SetCheckState(HWND hwndTreeView,HTREEITEM hItem,BOOL fCheck)//第999行,抛出错误
{//第1000行,抛出错误
//标段o代码
}//第1013行,抛出错误
如果需要更多的代码,我很乐意发布!我已经检查了您提供链接的代码
BOOL
类型已正确包含。要检查是否可以使用/p
选项编译Cheat.c
所有问题都是由于将项目从Visual Studio 6升级到Visual Studio 2015引起的
如果您调查预处理器输出,您将看到转换:
BOOL TreeView_GetCheckState(HWND hwndTreeView, HTREEITEM hItem); //(line 55, error thrown.)
BOOL TreeView_SetCheckState(HWND hwndTreeView, HTREEITEM hItem, BOOL fCheck); //(line 56)
预处理至:
BOOL ((((UINT)(SendMessageA((HWND hwndTreeView), (0x1100 + 39), (WPARAM)(HTREEITEM hItem), 0xF000))) >> 12) -1);
BOOL { TVITEMA _ms_TVi; _ms_TVi.mask = 0x0008; _ms_TVi.hItem = (HTREEITEM hItem); _ms_TVi.stateMask = (0xF000); _ms_TVi.state = ((((BOOL fCheck)?2:1) << 12)); SendMessageA((HWND hwndTreeView), (0x1100 + 13), 0, (LPARAM)(TVITEMA *)&_ms_TVi);};
BOOL(((UINT)(sendmagesa((HWND hwndTreeView),(0x1100+39),(WPARAM)(HTREEITEM hItem),0xF000))>>12-1);
BOOL{TVITEMA_ms_TVi;_ms_TVi.mask=0x0008;_ms_TVi.hItem=(HTREEITEM hItem);_ms_TVi.stateMask=(0xF000);_ms_TVi.state=((BOOL fCheck)?2:1)我已经检查了您提供链接的代码
BOOL
类型已正确包含。要检查是否可以使用/p
选项编译Cheat.c
所有问题都是由于将项目从Visual Studio 6升级到Visual Studio 2015引起的
如果您调查预处理器输出,您将看到转换:
BOOL TreeView_GetCheckState(HWND hwndTreeView, HTREEITEM hItem); //(line 55, error thrown.)
BOOL TreeView_SetCheckState(HWND hwndTreeView, HTREEITEM hItem, BOOL fCheck); //(line 56)
预处理至:
BOOL ((((UINT)(SendMessageA((HWND hwndTreeView), (0x1100 + 39), (WPARAM)(HTREEITEM hItem), 0xF000))) >> 12) -1);
BOOL { TVITEMA _ms_TVi; _ms_TVi.mask = 0x0008; _ms_TVi.hItem = (HTREEITEM hItem); _ms_TVi.stateMask = (0xF000); _ms_TVi.state = ((((BOOL fCheck)?2:1) << 12)); SendMessageA((HWND hwndTreeView), (0x1100 + 13), 0, (LPARAM)(TVITEMA *)&_ms_TVi);};
BOOL(((UINT)(sendmagesa((HWND hwndTreeView),(0x1100+39),(WPARAM)(HTREEITEM hItem),0xF000))>>12-1);
BOOL{TVITEMA{u ms_TVi;_ms_TVi.mask=0x0008;_ms_TVi.hItem=(HTREEITEM hItem);_ms_TVi.stateMask=(0xF000);_ms_TVi.state=((BOOL fCheck)?2:1)任何原因,你不能只使用标准/正确的代码> Boo.<代码>类型,而不是使用丑陋的TyWuff/Grace/Bug < Boo> <代码>,定义<代码>真< /COD>和<代码> false > EEW,为什么?这个代码看起来像是很坏的C -请升级到好的C++)您是否曾尝试过代码< WINDEF.H./Cuth>?@ JePijull:可能需要使用<代码>布尔O/COD>与其他使用它的Windows代码兼容。(这是使用<代码> Boo.<代码>而不是<代码> BoOL <代码> C++的唯一借口),<代码> BoOL < /C> >定义在<代码> WINDEF.H./COD>中,如<代码> TyPufIn Boo.;(只是在一篇评论中)你尝试了包括<代码> WordEf .H./code >。你确定你做的是否正确?尝试编译一个小型的C++程序,使用<代码> >包含<代码> > BooL
。更新你的问题,显示你实际做的代码包括<代码> WiDEF.H./code >。(复制并粘贴)问题中的错误消息。目前,您要求我们调试我们看不到的代码。这些错误没有说明任何有关