2013-06-28 62 views
1

我已閱讀了一些類似於此的其他問題,但我仍不知道 在「VOID」和「void」之間的使用情況有所不同。在C++中,VOID和void是否有區別?

我覺得使用VOID時感到不舒服,不知道與void的確切區別。

任何舒適的建議非常感謝。

+0

這取決於如何定義VOID。它不是標準語言或標準庫的一部分。聽起來像一個Windows的東西。 –

+0

'VOID'不是標準的東西。它必須是來自某處的typedef。檢查你在哪裏得到它的文件。也許''? – Angew

+0

我去了在「winnt.h」中顯示「#define VOID void」的定義。這是否意味着VOID和void一樣? – CodeDoctorJL

回答

5

void是該語言保留的關鍵字,但VOID不是。它在「winnt.h」中定義如下:

#ifndef VOID 
#define VOID void 

所以它們本質上是相同的,可以互換使用。有時爲了約定而用另一個替代另一個,但使用哪一個並不重要。無論如何,預處理器將最終在代碼中用void代替VOID,因爲那是#define所做的。

實際上很多關鍵字都是在Windows中「typedefed」的大寫字母。我認爲這只是爲了確保8位,16位和32位Windows之間的兼容性。爲什麼他們用void做到了這一點,雖然...這只是Windows怪異。 (據我所知)

3

區別在於void是該語言的一部分,VOID不是。如果你看一下預處理器包含VOID源文件之一的輸出,你應該能夠找到一個包含線像一條線:

typedef void VOID; 

這應該讓你感覺更好。

編輯:我從你上面的評論看到,有一條#define VOID void線。在這種情況下,您知道它們是相同的,但預處理器輸出中可能不會看到任何VOID看到的是,在您使用VOID的代碼中無處不在,預處理的輸出將具有void

+0

謝謝你們!現在有道理。 – CodeDoctorJL

+0

這意味着你應該使用'void'而不是'VOID',因爲第一個是標準,而後者不是。 – cmaster

相關問題