La macro est vraiment nommée '_' dans ruby.h (ou un .h de ruby.h subordonné). Ce qui est pire, c'est que d'autres paquets font la même chose, par ex. wxWidgets. Sous g ++ 3.3 on pourrait:
#include "ruby.h"
#undef _
#include "wx/filename.h"
et la sortie compilée utiliserait la version wxWidget de _ (ce qui est arrivé travailler pour moi), mais sous g ++ 4.6.1 le #undef _ complètement Annule la définition malgré le #undef survenant avant les wxWidgets. Cela signifie:
- Je ne peux pas éteindre Ruby _ sans éteindre WX de _
- Je ne peux pas _ de laisser Ruby sans briser la façon dont les fonctions WX exécuter
La solution ne semble pas claire, sans les deux parties se éloigner à partir de macros. Je n'ai pas trouvé un moyen d'utiliser des espaces de noms dans mon propre code pour contourner ceci - toujours en train d'essayer ...