遇到一些麻煩設置SDL後,我發現SDL定義一個宏替換主:爲什麼SDL定義主宏?
#define main SDL_main
// And then
extern C_LINKAGE int SDL_main(int argc, char *argv[]);
這也可以創建編譯錯誤,如果主函數沒有定義的argc
和argv
參數。
這個宏讓我頭痛,就在我看到它時......爲什麼SDL需要重新定義main?經過一番搜索之後,我發現有些人#undef main
,並以正常的方式使用它。
所以這就是問題:爲什麼SDL需要重新定義main,它是幹什麼的?是否有任何副作用來定義它?
我注意到的一件事是,SDL將標準輸出和錯誤重定向到文件(並且我不想要這種行爲),並且如果我取消定義main,則此行爲將停止。
幾乎每個圖書館都需要初始化,但這看起來像是一個糟糕的做法。無論如何。 – 2012-08-15 19:52:14
@DavidGrayson實際上做得很差,特別是如果你有兩個庫這樣做......巨大的痛苦 – 2012-08-15 19:54:29
我可以寫我自己的main()實現,而不是使用這個奇怪的SDL_main()函數嗎?有一些東西(例如,標準輸出重定向),這些東西有點壓倒我的喉嚨,我不想要它。 – Tibi 2012-08-15 20:06:30