_OgreExport is probably some weird #define the Ogre team made.
Yep, it is. You can see it in action here. That is where they defined it.
Basically in C++ there is something called the preprocessor, it's what deals with all the lines that start with # like #include or #define. At the simplest level, it replaces the Macro with the defined value.
In this case, it's to handle the various platforms. For example, for Android:
204 #if OGRE_PLATFORM == OGRE_PLATFORM_ANDROID
It has no value. Meaning that when compiled for Android, the value _OgreExport will be replaced with an empty value.
While later on down, you can see if Ogre is being compiled as a DLL, it gets a different value:
156 # else
157 # if defined( OGRE_NONCLIENT_BUILD )
158 # define _OgreExport __declspec( dllexport )
In this case, your code to the compiler will appear as:
class __declspec( dllexport) Root: public Sin.....
Make sense?