2012-05-21 115 views
-1

一不留神,我有以下問題:從「typedef void VOID」中內置「void」和「VOID」有什麼區別?

typedef void VOID; 

class Cls1 
{ 
public: 
    VOID Clear(VOID); 
}; 

,編譯器(G ++ 4.6.1)報道

error: 'anonymous' has incomplete type error: 'invalid use of 'VOID {aka void}'

有什麼特別的原因 '無效' 從 '無效' 有什麼不同?

+1

[C++ faq](http://www.parashift.com/c++-faq-lite/newbie.html#faq-29.4)對'f(void);'的使用做了很好的介紹。 –

+0

用typedef聲明一個void參數列表是非標準的 –

+0

這個問題我看了很多次。在提出問題之前嘗試谷歌。 – Xearinox

回答

2

OK,鐺編譯器提供了一個更可讀的錯誤:

test.cpp:14:20: error: empty parameter list defined with a typedef of 'void' not allowed in C++ void Clear(VOID);

1

沒有什麼不同。

在C++中,空參數列表是空的,而不是「void」。

+0

我更願意爲空參數列表顯式地添加「void」,因爲在C中沒有「void」的空參數列表假設您可以傳遞任意參數。 – xis

+4

@ xis19:您需要決定是否編寫C或C++代碼。在C++中,一個空的參數列表是慣用的 – jalf

+3

@ xis19 - OK。 vOv我喜歡用'$'來命名我的所有C++變量,因爲這是在Perl中完成的。 –

相關問題