<!-- ##### SECTION Title ##### -->
Version Information

<!-- ##### SECTION Short_Description ##### -->
Variables and functions to check the GLib version

<!-- ##### SECTION Long_Description ##### -->
<para>
GLib provides version information, primarily useful in configure checks
for builds that have a configure script. Applications will not
typically use the features described here.
</para>

<!-- ##### SECTION See_Also ##### -->
<para>

</para>

<!-- ##### VARIABLE glib_major_version ##### -->
<para>
The major version number of the GLib library. 
(e.g. in GLib version 1.2.5 this is 1.)
</para>

<para>
This variable is in the library, so represents the
GLib library you have linked against. Contrast with the
#GLIB_MAJOR_VERSION macro, which represents the major version of the
GLib headers you have included.
</para>


<!-- ##### VARIABLE glib_minor_version ##### -->
<para>
The minor version number of the GLib library.
(e.g. in GLib version 1.2.5 this is 2.)
</para>

<para>
This variable is in the library, so represents the
GLib library you have linked against. Contrast with the
#GLIB_MINOR_VERSION macro, which represents the minor version of the
GLib headers you have included.
</para>


<!-- ##### VARIABLE glib_micro_version ##### -->
<para>
The micro version number of the GLib library.
(e.g. in GLib version 1.2.5 this is 5.)
</para>

<para>
This variable is in the library, so represents the GLib library you
have linked against. Contrast with the #GLIB_MICRO_VERSION macro, which
represents the micro version of the GLib headers you have included.
</para>


<!-- ##### VARIABLE glib_binary_age ##### -->
<para>
This is the binary age passed to <application>libtool</application>. If 
<application>libtool</application> means nothing to you, don't worry 
about it. ;-)
</para>


<!-- ##### VARIABLE glib_interface_age ##### -->
<para>
This is the interface age passed to <application>libtool</application>. If 
<application>libtool</application> means nothing to you, don't worry 
about it. ;-)
</para>


<!-- ##### FUNCTION glib_check_version ##### -->
<para>

</para>

@required_major: 
@required_minor: 
@required_micro: 
@Returns: 


<!-- ##### MACRO GLIB_MAJOR_VERSION ##### -->
<para>
The major version number of the GLib library.
Like #glib_major_version, but from the headers used at
application compile time, rather than from the library linked against
at application run time.
</para>



<!-- ##### MACRO GLIB_MINOR_VERSION ##### -->
<para>
The minor version number of the GLib library.
Like #gtk_minor_version, but from the headers used at
application compile time, rather than from the library linked against
at application run time.
</para>



<!-- ##### MACRO GLIB_MICRO_VERSION ##### -->
<para>
The micro version number of the GLib library.
Like #gtk_micro_version, but from the headers used at
application compile time, rather than from the library linked against
at application run time.
</para>



<!-- ##### MACRO GLIB_CHECK_VERSION ##### -->
<para>
Checks the version of the GLib library.
Returns %TRUE if the version of the GLib header files is the same 
as or newer than the passed-in version.

<example>
<title>Checking the version of the GLib library</title>
<programlisting>
  if (!GLIB_CHECK_VERSION (1, 2, 0))
    g_error ("GLib version 1.2.0 or above is needed");
</programlisting>
</example>
</para>

@major: the major version number.
@minor: the minor version number.
@micro: the micro version number.


