GCC, stringificación, y GLSL en línea?

Me gustaría declarar las cadenas de sombreador GLSL en línea utilizando la cadena de macros:

#define STRINGIFY(A)  #A
const GLchar* vert = STRINGIFY(
#version 120\n
attribute vec2 position;
void main()
{
    gl_Position = vec4( position, 0.0, 1.0 );
}
);

Esto se construye y funciona bien usando VS2010 pero no se compila engcc con:

error: invalid preprocessing directive #version

¿Hay una manera de usar la estratificación como esta de una manera portátil?

Estoy tratando de evitar las citas por línea:

const GLchar* vert = 
"#version 120\n"
"attribute vec2 position;"
"void main()"
"{"
"    gl_Position = vec4( position, 0.0, 1.0 );"
"}"
;

... y / o línea continua:

const GLchar* vert = "\
#version 120\n                                 \
attribute vec2 position;                       \
void main()                                    \
{                                              \
    gl_Position = vec4( position, 0.0, 1.0 );  \
}                                              \
";

Respuestas a la pregunta(4)

Su respuesta a la pregunta