En el código siguiente, me gustaría que el valor de THE_VERSION_STRING
que se lanzará desde el valor de la variable de entorno MY_VERSION
en tiempo de compilación¿Cómo se utiliza el preprocesador C para hacer una sustitución con una variable de entorno
namespace myPluginStrings {
const char* pluginVendor = "me";
const char* pluginRequires = THE_VERSION_STRING;
};
Así que si escribo:
export MY_VERSION="2010.4"
pluginRequires
se fijará en "2010.4", incluso si MY_VERSION
se ajusta a otra cosa en tiempo de ejecución.
ACTUALIZACIÓN: (feb 21) Gracias por su ayuda a todos. Funciona. Como estoy usando Rake como sistema de compilación, cada uno de mis CFLAGS es una variable ruby. Además, los valores deben terminar entre comillas. Por lo tanto, la línea de comando gcc para mí tiene que tener este aspecto:
gcc file.c -o file -D"PLUGIN_VERSION=\"6.5\""
Lo que significa esto es en mi Rakefile:
"-D\"PLUGIN_VERSION=\\\"#{ENV['MY_VERSION']}\\\"\""
Esto no es algo que el preprocesador hará. Esto es algo que su sistema de compilación debería hacer. – GManNickG