2013-05-28 64 views
9

我對CLR相當陌生,我正在閱讀setWindowPos的C++/CLI文檔,並且函數的定義如此。在C++/CLI中,「_in_」和「_in_opt_」是什麼意思?

BOOL WINAPI SetWindowPos(
    _In_  HWND hWnd, 
    _In_opt_ HWND hWndInsertAfter, 
    _In_  int X, 
    _In_  int Y, 
    _In_  int cx, 
    _In_  int cy, 
    _In_  UINT uFlags 
); 

我有在C++經驗使我明白的是,例如,「HWND」是數據類型和「的hWnd」是變量名。

但是什麼是「_in _」和「_in_opt_」?

我猜他們是「輸入變量」或其他東西的簡稱。

它在文檔中提到hWndInsertAfter是可選的。這是否意味着如果我不需要,我可以簡單地忽略/不打擾在我的函數調用中將一個變量傳遞給此參數?

例如

SetWindowPos(this,0,0,GetSystemMetrics(SM_CXMAXIMIZED),GetSystemMetrics(SM_CYMAXIMIZED),SWP_NOZORDER); 
//Note that we're one parameter short here (the second is missing) 

(這將是混亂的我,因爲我已經看到了寫在C++不支持可選參數等地。只有在默認參數和重載)

+2

可能重複[什麼是\ _In \ _在C++?](http://stackoverflow.com/questions/11457328/what-is-in-in-c) – Sparr

+0

是的,我只是找到這個類似的話題。我承認我最初的研究不夠好,對不起。然而,我從這個問題得到的答案與我的具體問題更相關。 –

回答

16

這是微軟Source-Code Annotation Language的一部分。 _In_Opt_表示您可以通過NULL

+1

非常感謝。現在我有了這些註釋的名稱(我原本以爲它們被解釋並意味着對編譯器來說很重要),我有一個進一步研究的起點。 –