I currently have this to check for OpenCL 1.1:
Code :
// get the version
    cl.platform.version_major = atoi(strchr(cl.platform.version, ' ') + 1);
    cl.platform.version_minor = atoi(strchr(strchr(cl.platform.version, ' ') + 1, '.') + 1);
 
    if (cl.platform.version_major == 1)
    {
        if (cl.platform.version_minor == 0)
            cl.platform.version_num = version_1_0;
        else if (cl.platform.version_minor == 1)
            cl.platform.version_num = version_1_1;
        else
            cl.platform.version_num = version_newer;
    }
    else
        cl.platform.version_num = version_newer;

As you can see it is rather messy.

My suggestion is to add a way to get the version back as an int rather than a string.

e.g.
Add CL_PLATFORM_VERSION_NUMBER, CL_DEVICE_VERSION_NUMBER, and CL_DEVICE_OPENCL_C_VERSION_NUMBER to clGetPlatformInfo and clGetDeviceInfo.

They should return a cl_ushort structured like this:
0xAABB
Where the upper 8 bits (A) is the major version number, and the lower 8 bits (B) is the minor version number.

Then in cl.h add:
Code :
#define CL_VERSION_1_0     0x0100
#define CL_VERSION_1_1     0x0101
#define CL_VERSION_2_0     0x0200
etc.

Then to test for new features you can do something like:
Code :
cl_ushort version;
clGetDeviceInfo(device, CL_DEVICE_VERSION_NUMBER, sizeof(version), &version);
 
if (version >= CL_VERSION_1_1)
{
     //do something specific to 1.1
}