2011-05-31 100 views
0

我想向我的調試器添加一個方法,該方法將當前正在調試的進程的所有線程填充到THREADENTRY32數組中。爲此,我想使用方法「EnumerateThreads」,我傳遞了函數應該填寫的THREADENTRY32指針。作爲函數參數的THREADENTRY32結構數組原因C2061

但是,我無法使用THREADENTRY32指針作爲函數參數。

每次我在我的頭文件中聲明這樣的功能,收到C2061錯誤(「語法錯誤:標識符‘THREADENTRY32’」):

void EnumerateThreads(THREADENTRY32 *threadArray); 

頭文件包括已經限定THREADENTRY32結構如果我正確地閱讀。

使用自定義結構,並把它傳遞給函數沒有任何問題的工作:

結構測試 { INT喇嘛; DWORD boo; }; [...] void EnumerateThreads(Test * test);

我曾經用int-/char-/float-/etc。數組,但我沒有任何結構數組的經驗。 我只是想知道爲什麼它可以與我自己的結構一起工作,但不能與THREADENTRY32一起工作。

回答

1

嘗試使用:

void EnumerateThreads(struct THREADENTRY32 *threadArray); 

這將內聯向前聲明結構,但是,你從任何你訪問結構的成員或使用sizeof操作Tlhelp32.h需要完整的定義。

替代地需要聲明的結構(通過包括Tlhelp32.h)在相同的翻譯單元(但前述)的原的和它的用途,或提供一個前向聲明爲編譯器結合到經由struct THREADENTRY32;