2013-06-28 2 views
1

나는 이와 비슷한 다른 질문을 읽었으나, 여전히 "VOID"와 "void"사이에 사용의 측면에서 차이가 있는지 인지 알 수 없다.VOID와 void에서 C++의 차이점이 있습니까?

무효화와의 정확한 차이를 모른 채 VOID를 사용하는 것은 불편합니다.

모든 위안을주는 조언을 크게 기뻐합니다.

+0

'VOID'정의 방법에 따라 다릅니다. 표준 언어 또는 표준 라이브러리의 일부가 아닙니다. Windows처럼 들린다. –

+0

'VOID'는 표준적인 것이 아닙니다. 그것은 어딘가에서 오는 typedef 여야합니다. 가지고있는 문서를 확인하십시오. 아마 ''? – Angew

+0

"winnt.h"에 "#define VOID void"를 표시하는 정의로갔습니다. 이것은 VOID가 void와 완전히 동일하다는 것을 의미합니까? – CodeDoctorJL

답변

5

void은 (는) 해당 언어에서 예약 된 키워드입니다. 그러나 VOID은 (는) 해당 언어로 표시되지 않습니다. 다음과 같이 "winnt.h"에 정의되어 있습니다.

따라서 본질적으로 동일하며 서로 바꿔서 사용할 수 있습니다. 때로는 하나는 규칙 대신 다른 하나 대신 사용되지만 어떤 것이 사용되는지는 중요하지 않습니다. 전처리 기는 VOID을 코드에서 void으로 대체하게됩니다. 그 이유는 어쨌든 #define이 수행하기 때문입니다.

실제로 많은 키워드가 Windows에서 자신의 수도로 "typedefed"됩니다. 8 비트, 16 비트 및 32 비트 Windows 간의 호환성을 보장하는 것만으로 생각합니다. 왜 그들은 그것들을 void와 함께 했는가 ... 그것은 단지 윈도우가 이상하다는 것입니다. (내가 아는 한)

3

void은 언어의 일부이며 VOID은 그렇지 않습니다. 기분이 좀 나아질한다

typedef void VOID; 

: 당신이 VOID가 포함 된 소스 파일 중 하나에 대한 처리기의 출력을 보면, 당신은 같은 라인 뭔가를 포함하는 라인을 찾을 수 있어야합니다.

편집 : 위의 사용자 의견에서 #define VOID void 행이 표시됩니다. 이 경우, 그것들은 동일하지만, 전 처리기 출력에 VOID이 보이지 않을 가능성이 있습니다. 너 이 될 것이고, 그 코드의 어느 부분에서든 VOID을 사용했다면, 전처리 된 출력은 void이 될 것이다.

+0

감사합니다! 지금은 의미가 있습니다. – CodeDoctorJL

+0

즉, 첫번째는 표준이고 이후는 그렇지 않기 때문에'VOID'가 아니라'void'를 사용해야한다는 것을 의미합니다. – cmaster