When calling clCreateProgramWithSource, one can input a string of the form
char str[] = "#include \"my_kernel.cl\"";
and avoid having to manually read the file into an array.
Although the kernel will execute correctly, CodeXL is unable to bind breakpoints in OpenCL kernel code if this technique is used.
(I'm running the latest CodeXL, the latest Catalyst drivers, and VS2010 Premium, on Windows 8.1.)