3
我在使用wglGetProcAddress的代碼中獲得了GL函數。該指南的作者(https://sites.google.com/site/opengltutorialsbyaks/introduction-to-opengl-3-2---tutorial-01)說我需要定義如下功能:爲什麼我需要extern?
extern PFNGLCREATEPROGRAMPROC glCreateProgram;
使用extern關鍵字。但我沒有嘗試過,並且工作正常(編譯成功完成,程序成功使用該函數)。爲什麼我一般需要這個關鍵字,在這種情況下?
但它工作,即使我在課堂上定義這個函數爲靜態(不是全局函數)。在這種情況下編譯器做什麼?爲什麼我不需要extern? – user14416
@ user14416本教程不會說*需要*使用extern,它只是向您展示了使用extern的一種方法。你沒有使用extern就找到了不同的方法。沒關係。迪馬對於extern的做法有一個很好的解釋,除了他似乎沒有意識到你聲明瞭一個全局變量而不是全局函數。 – john
@ user14416,C++相當多地重載了'static'的使用。 在類**中將方法定義爲靜態**與定義全局靜態方法不同。在前一種情況下,'static'意味着該方法是一個類方法,並且沒有隱含的'this'指針,而在後者中意味着他隱藏在編譯單元中的方法。 – StoryTeller