2012-11-23 47 views
1

因此,我正在使用C來學習SDL。我在設法讓SDL_Init()給出了分段錯誤。經過一番調查,事實證明,罪魁禍首是我創建了一個函數int connect()。如果我將該函數重命名爲其他內容my_connect(),那麼一切工作正常。SDL函數名稱?

我想到一個名爲connect()的函數已經存在於SDL庫的某處,並且我的定義正在導致衝突。然而,API沒有提及名爲connect的函數或任何類似的函數。

使用SDL時,我應該避免使用其他名稱嗎?我在哪裏可以找到它們的列表?

......或者這僅僅是封裝需求的另一個很好的例子嗎?

回答

4

所有SDL名稱均以SDL_開頭。但是,SDL可以調用標準C函數(例如connect)來運行。如果您的應用程序使用該名稱創建全局函數,則它將替換標準庫中的一個,從而使SDL使用您的而不是全局函數。事實上,使用不同的名稱可以解決問題。另一個選擇是讓你的函數成爲靜態的(但當然你不需要全局函數)。