Definitivamente no hay #define para que, al menos en mi versión de GCC.
Para ver todos los símbolos del preprocesador predefinidos:
g++ -dM -E - < /dev/null
no creo que hay alguna manera de probar estas opciones. Sin embargo, si está utilizando GCC 4.4 o posterior, puede usar "optimize" function attribute o "optimize" #pragma para habilitar opciones específicas por función o por archivo.
Por ejemplo, si se agrega a un archivo de cabecera común:
#if defined(__GNUC__)
#pragma GCC optimize ("no-strict-aliasing")
#else
#error "You are not using GCC"
#endif
... debe habilitar la opción para cada archivo que incluye la cabecera.
[Actualización]
Aceptar lo que me llevó unos 10 minutos demasiado largos para componer esta respuesta. Voy a dejarlo aquí de todos modos por los enlaces a los documentos de GCC.
suena como algo que debería ser capaz de hacer. –
@Code Monkey: Por supuesto, la bandera se puede pasar a través de make. Pero si el código fuente se mueve a un nuevo sistema make, ese conocimiento puede perderse (por ejemplo, si está distribuyendo el código fuente a una lib). Quiero que el código mismo sepa lo que necesita. Es más seco de esa manera. :) – paleozogt