大家看看这段控制太代码 为什么BOOL TRUE 都有错 而 bool true 就没错了 为什么了

chenxidu 2009-01-07 10:10:05

// code_key.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <stdio.h>
#include<iostream>
#include <stdlib.h>
#include <string.h>
#include <io.h>

using namespace std;

typedef unsigned long DWORD ;
typedef char BYTE ;

#define ENCDLG_KEY "xy_wsyq_2009"

#define ENC_BLOCK 1600
#define DEC_BLOCK 1616

bool DecryptText(string passwd, BYTE *data, DWORD len, BYTE *&ret_data, DWORD &ret_len);
bool EncryptText(string passwd, BYTE *data, DWORD len, BYTE *&ret_data, DWORD &ret_len);

int main( )
{
//--加密解密转换

string wcs_txt ;

DWORD m_dwSrcSize ;
DWORD m_dwDstSize ;

BYTE *m_pSrc = NULL ;
BYTE *m_pDst = NULL;

//--读文件
wcs_txt = "C:\\setitem.wcs" ;

FILE *f = fopen(wcs_txt.c_str(), "rb");
if (!f)
return 0 ;

fseek(f, 0, SEEK_END);
m_dwSrcSize = ftell(f);
fseek(f, 0, SEEK_SET);

m_pSrc = new BYTE [m_dwSrcSize];
fread(m_pSrc, m_dwSrcSize, 1, f);

fclose(f);

//--转换


return 0;
}


bool DecryptText(string passwd, BYTE *data, DWORD len, BYTE *&ret_data, DWORD &ret_len)
{
//--解密函数

return true;

}

bool EncryptText(string passwd, BYTE *data, DWORD len, BYTE *&ret_data, DWORD &ret_len)
{
//--加密函数


return true;

}


上面这段代码中的 bool true 为什么不能换成大写了,换成大写就提示

1>code_key.cpp
1>e:\works\code_key\code_key\code_key\code_key.cpp(21) : error C2146: 语法错误 : 缺少“;”(在标识符“DecryptText”的前面)
1>e:\works\code_key\code_key\code_key\code_key.cpp(21) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\works\code_key\code_key\code_key\code_key.cpp(21) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\works\code_key\code_key\code_key\code_key.cpp(59) : error C2146: 语法错误 : 缺少“;”(在标识符“DecryptText”的前面)
1>e:\works\code_key\code_key\code_key\code_key.cpp(59) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\works\code_key\code_key\code_key\code_key.cpp(59) : error C2086: “int BOOL”: 重定义
1> e:\works\code_key\code_key\code_key\code_key.cpp(21) : 参见“BOOL”的声明
1>e:\works\code_key\code_key\code_key\code_key.cpp(60) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>e:\works\code_key\code_key\code_key\code_key.cpp(77) : warning C4018: “<”: 有符号/无符号不匹配
1>e:\works\code_key\code_key\code_key\code_key.cpp(80) : warning C4018: “<”: 有符号/无符号不匹配
1>e:\works\code_key\code_key\code_key\code_key.cpp(87) : error C3861: “SeedDecryption”: 找不到标识符
1>e:\works\code_key\code_key\code_key\code_key.cpp(114) : warning C4018: “<”: 有符号/无符号不匹配
1>e:\works\code_key\code_key\code_key\code_key.cpp(117) : warning C4018: “<”: 有符号/无符号不匹配
...全文
298 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackzhhuang 2009-01-07
  • 打赏
  • 举报
回复
BOOL不是C++关键值,自己定义就是了,或则include windows
bluejing0 2009-01-07
  • 打赏
  • 举报
回复
m_pSrc 有内存泄露
帅得不敢出门 2009-01-07
  • 打赏
  • 举报
回复
想用BOOL就得加头文件
当然你自己typedef一个也可以 像BYTE一样
帅得不敢出门 2009-01-07
  • 打赏
  • 举报
回复

#include "stdafx.h"
#include <stdio.h>
#include<iostream>
#include <stdlib.h>
#include <string.h>
#include <io.h>
#include <windows.h>

using namespace std;

//typedef unsigned long DWORD ;
//typedef char BYTE ;

#define ENCDLG_KEY "xy_wsyq_2009"

#define ENC_BLOCK 1600
#define DEC_BLOCK 1616

BOOL DecryptText(string passwd, BYTE *data, DWORD len, BYTE *&ret_data, DWORD &ret_len);
BOOL EncryptText(string passwd, BYTE *data, DWORD len, BYTE *&ret_data, DWORD &ret_len);

int main( )
{
//--加密解密转换

string wcs_txt ;

DWORD m_dwSrcSize ;
DWORD m_dwDstSize ;

BYTE *m_pSrc = NULL ;
BYTE *m_pDst = NULL;

//--读文件
wcs_txt = "C:\\setitem.wcs" ;

FILE *f = fopen(wcs_txt.c_str(), "rb");
if (!f)
return 0 ;

fseek(f, 0, SEEK_END);
m_dwSrcSize = ftell(f);
fseek(f, 0, SEEK_SET);

m_pSrc = new BYTE [m_dwSrcSize];
fread(m_pSrc, m_dwSrcSize, 1, f);

fclose(f);

//--转换


return 0;
}


BOOL DecryptText(string passwd, BYTE *data, DWORD len, BYTE *&ret_data, DWORD &ret_len)
{
//--解密函数

return TRUE;

}

BOOL EncryptText(string passwd, BYTE *data, DWORD len, BYTE *&ret_data, DWORD &ret_len)
{
//--加密函数


return TRUE;

}


Boolean variable (should be TRUE or FALSE).
This type is declared in WinDef.h as follows:
typedef int BOOL;
Cpp权哥 2009-01-07
  • 打赏
  • 举报
回复
你需要包含windows.h,或者自己在文件开头加上这么几行:
typedef int BOOL;
#define TRUE 1
#define FALSE 0
nullah 2009-01-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 shilei_815 的回复:]
C++里对大小写是很敏感的,楼主切忌,不同的大小写可能代表不同的意义!

一.BOOL和bool的区别:
  1、类型不同
  BOOL为int型
  bool为布尔型
  2、长度不同
  bool只有一个字节
  BOOL长度视实际环境来定,一般可认为是4个字节
  3、取值不同
  bool取值false和true,是0和1的区别
  BOOL取值FALSE和TRUE,是0和非0的区别而bool是标准C++数据类型,可取值true和false。单独占一个字节,…
[/Quote]
up~~
shilei_815 2009-01-07
  • 打赏
  • 举报
回复
C++里对大小写是很敏感的,楼主切忌,不同的大小写可能代表不同的意义!

一.BOOL和bool的区别:
  1、类型不同
  BOOL为int型
  bool为布尔型
  2、长度不同
  bool只有一个字节
  BOOL长度视实际环境来定,一般可认为是4个字节
  3、取值不同
  bool取值false和true,是0和1的区别
  BOOL取值FALSE和TRUE,是0和非0的区别而bool是标准C++数据类型,可取值true和false。单独占一个字节,
  如果数个bool对象列在一起,可能会各占一个bit,这取决于编译器。
  BOOL是微软定义的typedef int BOOL。与bool不同,它是一个三值逻辑,
  TRUE/FALSE/ERROR,返回值为>0的整数为TRUE,0为FALSE,-1为ERROR。
  Win32 API中很多返回值为BOOL的函数都是三值逻辑。比如GetMessage().
  *********************************************************************************************************************************************
  二:布尔型变量bool
  bool是布尔型变量,也就是逻辑型变量的定义符,类似于float,double等,只不过float定义浮点型,double定义双精度浮点型。
  布尔型变量的值只有 真 (TRUE) 和假 (FALSE)。
  布尔型变量可用于逻辑表达式,也就是“或”“与\"“非\"之类的逻辑运算和大于小于之类的关系运算,逻辑表达式运算结果为真或为假。
  bool可用于定义函数类型为布尔型,函数里可以有 return TRUE; return FALSE 之类的语句。
  布尔型运算结果常用于条件语句,
  if (逻辑表达式){
  如果是 TRUE 执行这里;
  } else {
  如果是 FALSE 执行这里;
  };
baihacker 2009-01-07
  • 打赏
  • 举报
回复

//注意其中的这一小段

typedef unsigned long DWORD;
typedef int BOOL;
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef float FLOAT;
typedef FLOAT *PFLOAT;
typedef BOOL near *PBOOL;
typedef BOOL far *LPBOOL;
typedef BYTE near *PBYTE;
typedef BYTE far *LPBYTE;
typedef int near *PINT;
typedef int far *LPINT;
typedef WORD near *PWORD;
typedef WORD far *LPWORD;
typedef long far *LPLONG;
typedef DWORD near *PDWORD;
typedef DWORD far *LPDWORD;
typedef void far *LPVOID;
typedef CONST void far *LPCVOID;
ckt 2009-01-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chenxidu 的回复:]
那我程序中用 bool 有错误吗
[/Quote]

返回值是你根据需要定义就是了,无须拘泥与此.
如果你只要正确,错误两种,用bool就行了.
如果有多种,就选择int.
baihacker 2009-01-07
  • 打赏
  • 举报
回复
#define HFILE_ERROR ((HFILE)-1)

typedef struct tagRECT
{
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECT, *PRECT, NEAR *NPRECT, FAR *LPRECT;

typedef const RECT FAR* LPCRECT;

typedef struct _RECTL /* rcl */
{
LONG left;
LONG top;
LONG right;
LONG bottom;
} RECTL, *PRECTL, *LPRECTL;

typedef const RECTL FAR* LPCRECTL;

typedef struct tagPOINT
{
LONG x;
LONG y;
} POINT, *PPOINT, NEAR *NPPOINT, FAR *LPPOINT;

typedef struct _POINTL /* ptl */
{
LONG x;
LONG y;
} POINTL, *PPOINTL;

typedef struct tagSIZE
{
LONG cx;
LONG cy;
} SIZE, *PSIZE, *LPSIZE;

typedef SIZE SIZEL;
typedef SIZE *PSIZEL, *LPSIZEL;

typedef struct tagPOINTS
{
#ifndef _MAC
SHORT x;
SHORT y;
#else
SHORT y;
SHORT x;
#endif
} POINTS, *PPOINTS, *LPPOINTS;

//
// File System time stamps are represented with the following structure:
//

typedef struct _FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME, *PFILETIME, *LPFILETIME;
#define _FILETIME_


/* mode selections for the device mode function */
#define DM_UPDATE 1
#define DM_COPY 2
#define DM_PROMPT 4
#define DM_MODIFY 8

#define DM_IN_BUFFER DM_MODIFY
#define DM_IN_PROMPT DM_PROMPT
#define DM_OUT_BUFFER DM_COPY
#define DM_OUT_DEFAULT DM_UPDATE

/* device capabilities indices */
#define DC_FIELDS 1
#define DC_PAPERS 2
#define DC_PAPERSIZE 3
#define DC_MINEXTENT 4
#define DC_MAXEXTENT 5
#define DC_BINS 6
#define DC_DUPLEX 7
#define DC_SIZE 8
#define DC_EXTRA 9
#define DC_VERSION 10
#define DC_DRIVER 11
#define DC_BINNAMES 12
#define DC_ENUMRESOLUTIONS 13
#define DC_FILEDEPENDENCIES 14
#define DC_TRUETYPE 15
#define DC_PAPERNAMES 16
#define DC_ORIENTATION 17
#define DC_COPIES 18

#ifdef __cplusplus
}
#endif

#endif /* _WINDEF_ */
baihacker 2009-01-07
  • 打赏
  • 举报
回复
/****************************************************************************
* *
* windef.h -- Basic Windows Type Definitions *
* *
* Copyright (c) Microsoft Corporation. All rights reserved. *
* *
****************************************************************************/


#ifndef _WINDEF_
#define _WINDEF_

#ifndef NO_STRICT
#ifndef STRICT
#define STRICT 1
#endif
#endif /* NO_STRICT */

// Win32 defines _WIN32 automatically,
// but Macintosh doesn't, so if we are using
// Win32 Functions, we must do it here

#ifdef _MAC
#ifndef _WIN32
#define _WIN32
#endif
#endif //_MAC

#ifndef WIN32
#define WIN32
#endif

#ifdef __cplusplus
extern "C" {
#endif

#ifndef WINVER
#define WINVER 0x0500
#endif /* WINVER */

/*
* BASETYPES is defined in ntdef.h if these types are already defined
*/

#ifndef BASETYPES
#define BASETYPES
typedef unsigned long ULONG;
typedef ULONG *PULONG;
typedef unsigned short USHORT;
typedef USHORT *PUSHORT;
typedef unsigned char UCHAR;
typedef UCHAR *PUCHAR;
typedef char *PSZ;
#endif /* !BASETYPES */

#define MAX_PATH 260

#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif

#ifndef FALSE
#define FALSE 0
#endif

#ifndef TRUE
#define TRUE 1
#endif

#ifndef IN
#define IN
#endif

#ifndef OUT
#define OUT
#endif

#ifndef OPTIONAL
#define OPTIONAL
#endif

#undef far
#undef near
#undef pascal

#define far
#define near
#if (!defined(_MAC)) && ((_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED))
#define pascal __stdcall
#else
#define pascal
#endif

#if defined(DOSWIN32) || defined(_MAC)
#define cdecl _cdecl
#ifndef CDECL
#define CDECL _cdecl
#endif
#else
#define cdecl
#ifndef CDECL
#define CDECL
#endif
#endif

#ifdef _MAC
#define CALLBACK PASCAL
#define WINAPI CDECL
#define WINAPIV CDECL
#define APIENTRY WINAPI
#define APIPRIVATE CDECL
#ifdef _68K_
#define PASCAL __pascal
#else
#define PASCAL
#endif
#elif (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
#define CALLBACK __stdcall
#define WINAPI __stdcall
#define WINAPIV __cdecl
#define APIENTRY WINAPI
#define APIPRIVATE __stdcall
#define PASCAL __stdcall
#else
#define CALLBACK
#define WINAPI
#define WINAPIV
#define APIENTRY WINAPI
#define APIPRIVATE
#define PASCAL pascal
#endif

#ifdef _M_CEE_PURE
#define WINAPI_INLINE __clrcall
#else
#define WINAPI_INLINE WINAPI
#endif

#undef FAR
#undef NEAR
#define FAR far
#define NEAR near
#ifndef CONST
#define CONST const
#endif

typedef unsigned long DWORD;
typedef int BOOL;
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef float FLOAT;
typedef FLOAT *PFLOAT;
typedef BOOL near *PBOOL;
typedef BOOL far *LPBOOL;
typedef BYTE near *PBYTE;
typedef BYTE far *LPBYTE;
typedef int near *PINT;
typedef int far *LPINT;
typedef WORD near *PWORD;
typedef WORD far *LPWORD;
typedef long far *LPLONG;
typedef DWORD near *PDWORD;
typedef DWORD far *LPDWORD;
typedef void far *LPVOID;
typedef CONST void far *LPCVOID;

typedef int INT;
typedef unsigned int UINT;
typedef unsigned int *PUINT;

#ifndef NT_INCLUDED
#include <winnt.h>
#endif /* NT_INCLUDED */

#include <specstrings.h>

/* Types use for passing & returning polymorphic values */
typedef UINT_PTR WPARAM;
typedef LONG_PTR LPARAM;
typedef LONG_PTR LRESULT;

#ifndef NOMINMAX

#ifndef max
#define max(a,b) (((a) > (b)) ? (a) : (b))
#endif

#ifndef min
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif

#endif /* NOMINMAX */

#define MAKEWORD(a, b) ((WORD)(((BYTE)((DWORD_PTR)(a) & 0xff)) | ((WORD)((BYTE)((DWORD_PTR)(b) & 0xff))) << 8))
#define MAKELONG(a, b) ((LONG)(((WORD)((DWORD_PTR)(a) & 0xffff)) | ((DWORD)((WORD)((DWORD_PTR)(b) & 0xffff))) << 16))
#define LOWORD(l) ((WORD)((DWORD_PTR)(l) & 0xffff))
#define HIWORD(l) ((WORD)((DWORD_PTR)(l) >> 16))
#define LOBYTE(w) ((BYTE)((DWORD_PTR)(w) & 0xff))
#define HIBYTE(w) ((BYTE)((DWORD_PTR)(w) >> 8))


#ifndef WIN_INTERNAL
DECLARE_HANDLE (HWND);
DECLARE_HANDLE (HHOOK);
#ifdef WINABLE
DECLARE_HANDLE (HEVENT);
#endif
#endif

typedef WORD ATOM;

typedef HANDLE NEAR *SPHANDLE;
typedef HANDLE FAR *LPHANDLE;
typedef HANDLE HGLOBAL;
typedef HANDLE HLOCAL;
typedef HANDLE GLOBALHANDLE;
typedef HANDLE LOCALHANDLE;
#ifndef _MAC
#ifdef _WIN64
typedef INT_PTR (FAR WINAPI *FARPROC)();
typedef INT_PTR (NEAR WINAPI *NEARPROC)();
typedef INT_PTR (WINAPI *PROC)();
#else
typedef int (FAR WINAPI *FARPROC)();
typedef int (NEAR WINAPI *NEARPROC)();
typedef int (WINAPI *PROC)();
#endif // _WIN64
#else
typedef int (CALLBACK *FARPROC)();
typedef int (CALLBACK *NEARPROC)();
typedef int (CALLBACK *PROC)();
#endif

#if !defined(_MAC) || !defined(GDI_INTERNAL)
#ifdef STRICT
typedef void NEAR* HGDIOBJ;
#else
DECLARE_HANDLE(HGDIOBJ);
#endif
#endif

DECLARE_HANDLE(HKEY);
typedef HKEY *PHKEY;

#if !defined(_MAC) || !defined(WIN_INTERNAL)
DECLARE_HANDLE(HACCEL);
#endif
#if !defined(_MAC) || !defined(GDI_INTERNAL)
DECLARE_HANDLE(HBITMAP);
DECLARE_HANDLE(HBRUSH);
#endif
#if(WINVER >= 0x0400)
DECLARE_HANDLE(HCOLORSPACE);
#endif /* WINVER >= 0x0400 */
#if !defined(_MAC) || !defined(GDI_INTERNAL)
DECLARE_HANDLE(HDC);
#endif
DECLARE_HANDLE(HGLRC); // OpenGL
DECLARE_HANDLE(HDESK);
DECLARE_HANDLE(HENHMETAFILE);
#if !defined(_MAC) || !defined(GDI_INTERNAL)
DECLARE_HANDLE(HFONT);
#endif
DECLARE_HANDLE(HICON);
#if !defined(_MAC) || !defined(WIN_INTERNAL)
DECLARE_HANDLE(HMENU);
#endif
DECLARE_HANDLE(HMETAFILE);
DECLARE_HANDLE(HINSTANCE);
typedef HINSTANCE HMODULE; /* HMODULEs can be used in place of HINSTANCEs */
#if !defined(_MAC) || !defined(GDI_INTERNAL)
DECLARE_HANDLE(HPALETTE);
DECLARE_HANDLE(HPEN);
#endif
DECLARE_HANDLE(HRGN);
DECLARE_HANDLE(HRSRC);
DECLARE_HANDLE(HSTR);
DECLARE_HANDLE(HTASK);
DECLARE_HANDLE(HWINSTA);
DECLARE_HANDLE(HKL);

#if(WINVER >= 0x0500)
#ifndef _MAC
DECLARE_HANDLE(HMONITOR);
DECLARE_HANDLE(HWINEVENTHOOK);
#endif
DECLARE_HANDLE(HUMPD);
#endif /* WINVER >= 0x0500 */

#ifndef _MAC
typedef int HFILE;
typedef HICON HCURSOR; /* HICONs & HCURSORs are polymorphic */
#else
typedef short HFILE;
DECLARE_HANDLE(HCURSOR); /* HICONs & HCURSORs are not polymorphic */
#endif

typedef DWORD COLORREF;
typedef DWORD *LPCOLORREF;



chenzhp 2009-01-07
  • 打赏
  • 举报
回复
在C++代码中大小写敏感,没有BOOL。似乎BOOL是windows里面重新定义的。

bool true
chenxidu 2009-01-07
  • 打赏
  • 举报
回复
那我程序中用 bool 有错误吗
ckt 2009-01-07
  • 打赏
  • 举报
回复
BOOL并不等于bool,
BOOL是windows定义的,而不是C++标准.
typedef long BOOL;

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧