누구나 좋은 Windows Constant List가 사는 곳을 알고 있습니다
문제
나는 유효하지 않은 값을 -1로 설정하려고 노력하고 있습니다. 저는 vs6 (ISH)에서 일하고 있습니다.
네트워크에서 파일을 읽으려고 노력하고 있으며 총 파일 크기에 대한 값이 잘못 필요하므로 유효한 정보를 얻었는지 0이 유효한 크기이므로 사용할 수 없습니다.
Harper Shelby는 머리에 못을 박았습니다. 약간의 엄지 손가락. 그는 Win32 상수를 언급했습니다. 이것이 바로 내가 생각했던 것입니다 .. 이제 링크를 찾기 위해 :)
다른 팁
-1이 시스템의 반환 값에 대한 잘못된 값 인 경우 내부적으로 정의해야합니다.
const int INVALID_FOO = -1
C 호환성이 필요하지 않는 한
#define INVALID_FOO -1
선호합니다. 표준 MFC 또는 Windows 리소스 인 경우 invalid_handle 또는 다른 Win32 정의 상수 중 하나를 사용하십시오.
당신은 당신의 자신의 마법 번호 -1을 창 상수로 위장한 것을 사용하고 싶습니다. 이것은 매우 오해의 소지가 있습니다.
invalid_handle이 0임을 알고 있다고 가정 해 봅시다. invalid_handle로 포인터를 초기화해도 괜찮습니까?
char *myMessage = INVALID_HANDLE;
이것이 당신을 어떻게 공격합니까?
VS에서는 새로운 Windows 콘솔 응용 프로그램 프로젝트를 만듭니다. 프로젝트 설정으로 이동하여 찾아보기 지원을 켜십시오. C ++ 파일을 만들고 프로젝트에 추가하십시오. 유형:
#include <windows.h>
void main(void) {}
파일로. 컴파일하십시오. 이제 invalid_file_size를 파일에 입력하십시오. 이를 마우스 오른쪽 버튼으로 클릭하고 invalid_file_size의 정의를 얻습니다. VS는 정의 된 값으로 가득 찬 많은 Windows 헤더 파일 중 하나를 열 것입니다. 즐기다.
첫 번째는 파일 크기가 결코 음수이므로 파일 크기에 부호되지 않은 int를 사용해야한다는 것입니다. 이제 유효하지 않은 파일 크기는 일반적으로 최대 int이므로 32 비트 부호없는 int를 사용하는 경우 0xffffffff입니다.
즉
const unsigned int INVALID_FILESIZE = 0xFFFFFFFF;
또한 Windows에있는 경우 Windows.h는 잘못된 파일 크기를 모두 정의합니다 (invalid_file_size)
Winapi에서 사용하는 상수를 사용하려면 Winerror.h, Winuser.h 및 Winnt.h 파일을 확인하십시오.
일반적으로 0과 1 (긍정적 및 음수)은 직접 사용해도 괜찮습니다.
실제로, 변수를 대신 사용하는 것이 더 혼란 스러울 것입니다.
업데이트 : 좋아요, 제가 답을 쓴 후 질문을 업데이트했습니다. 산술 방식으로 "-1"을 사용하는 경우 "-1"만 괜찮습니다. 오류 코드를 반환하는 경우 (코드가 -1 인 경우) const를 사용해야합니다.
const int INVALID_VALUE = -1;
If bytes_read < 0
// error
EndIf