2016-09-24 7 views
-1

Ich versuche, eine Anwendung aus dem Quellcode mit Visual Studio 2015 Enterprise zu kompilieren. Ich bin auf einige Probleme gestoßen.BOOL nicht als Datentyp erkannt (C ...?)

Wenn ich versuche zu kompilieren, bekomme ich mehrere Fehler in Bezug auf BOOL ist ein undefinierter Typ. Ich habe versucht, winmindef.h und windef.h vergeblich zu verwenden. Hier einige der Funktionsdeklarationen in dem Code, den Fehler zu werfen:

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);` 

Wenn ich die folgenden in der H-Datei enthalten, ist das Problem noch nicht behoben

#ifndef TRUE 
#define TRUE 1 
#endif 
#ifndef FALSE 
#define FALSE 0 
#endif 

typedef int BOOL; 

Wenn es hilft, ich bin versuchen, PJ64 zu kompilieren, und müssen möglicherweise einige Einstellungen ändern, um zu kompilieren, aber ich bin mir nicht sicher, welche.

Jede Hilfe wird geschätzt!

--- UPDATE ---

Hier sind die komplette Kompilierung Fehler (ich habe die meisten der Warnungen weggelassen):

1>cl : Command line warning D9007: '/Gm' requires '/Zi or /ZI'; option ignored 
1> Cheat.c 
1>Cheat.c(55): error C2059: syntax error: '<parameter-list>' 
1>Cheat.c(56): error C2059: syntax error: '{' 
1>Cheat.c(233): warning C4267: '=': conversion from 'size_t' to 'WORD', possible loss of data 
1>Cheat.c(326): warning C4267: '=': conversion from 'size_t' to 'WORD', possible loss of data 
1>Cheat.c(346): warning C4267: '=': conversion from 'size_t' to 'WORD', possible loss of data 
1>Cheat.c(982): error C2059: syntax error: '<parameter-list>' 
1>Cheat.c(998): error C2059: syntax error: '{' 
1>Cheat.c(999): error C2449: found '{' at file scope (missing function header?) 
1>Cheat.c(1012): error C2059: syntax error: '}' 

Der vollständige Code für das Projekt, das ich zu kompilieren versuchen kann here gefunden werden.

Dies ist -teil- des Codes, der kompiliert wurde und die obigen Fehler warf. Ich habe die große Mehrheit des Codes weggelassen, weil es zu lang ist, hier einzubeziehen. Ich habe Kommentare hinterlassen, die angeben, welche Zeilen Fehler verursacht haben.

#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 

Wenn mehr Code gewünscht wird, werde ich gerne posten!

+0

Entschuldigung, ich habe versucht, windef.h, das hat es nicht zu beheben, noch winmindef.h – Jack

+5

Ein Grund, warum Sie nicht nur die Standard/richtige 'Bool'-Typ anstelle dieser hässlichen Typdef/Makro verwenden können/was auch immer 'BOOL'? Und defining 'true' und' false' - eeew, warum? Dieser Code sieht für mich wie ein ziemlich schlechtes C aus - bitte upgrade ihn auf * good * C++ :) –

+1

Hast du 'WinDef.h' probiert? – tadman

Antwort

1

Ich habe den Code überprüft, den Sie angegeben haben.

BOOL Typ ist ordnungsgemäß enthalten. Um zu überprüfen, dass Sie Cheat.c mit /P Option kompilieren können.

Alle Probleme werden durch Upgrade des Projekts von Visual Studio 6 auf Visual Studio 2015 verursacht

Wenn Sie den Pre-Prozessor untersuchen ouput Sie die Transformation sehen:

BOOL TreeView_GetCheckState(HWND hwndTreeView, HTREEITEM hItem); //(line 55, error thrown.) 
BOOL TreeView_SetCheckState(HWND hwndTreeView, HTREEITEM hItem, BOOL fCheck); //(line 56) 

pre -processed zu:

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);}; 

Es ist nicht, was Sie erwarten, um in Ihren Funktionsdeklarationen zu sehen.

Diese beiden TreeView_GetCheckState und TreeView_SetCheckState sind Standardmakros definiert in CommCtrl.h. Entfernen Sie Ihre alten Funktionen und verwenden Sie diese Makros.

+1

Das hat es geschafft! Ich danke dir sehr! – Jack

Verwandte Themen