As I was fed up with that kind of problem, I have written a class that wraps OpenGL rendering contexts and its associated extensions.
When you call the Initialize member function, it loads all the available extensions. Then, when you use the MakeCurrent function, it copies the RC function pointers to global variables that are accessible from anywhere in the program.
Surely, there is a performance hit (coz’ I copy all the function pointers each time I do a MakeCurrent) but then I can use extensions as if they were normal gl calls…
You should probably do something similar !
But do not forget : you still have to test if the extension is available before using it !!! For example, I use the GL_EXT_separate_specular_color extension for rendering specular highlights with textures in one pass. The thing is, when I render to a bitmap (for saving in a file), I use the Microsoft GDI Generic OpenGL implementation, which does not have this extension !
So somewhere in my code I have :
Anyway, I think this is a really nice system to use extensions with minimal headache !