This will break GLES support. Unfortunately #version must be set before any preprocessor statements, so we must decide this on c++ :/

btw, glShaderSource gets an array of strings, so you can easily do this without string functions.