Макрос действительно называется '_' в ruby.h (или подчинённо называемый .h в ruby.h).Хуже всего то, что другие пакеты делают то же самое, например, wxWidgets.В g ++ 3.3 можно было бы:
#include "ruby.h"
#undef _
#include "wx/filename.h"
, и скомпилированный вывод будет использовать версию _ для wxWidget (что мне помогло), но в g ++ 4.6.1 #undef полностью отменяет определение _, несмотря на#undef происходит до включения wxWidgets.Это означает:
- Я не могу выключить рубин _ без выключения wx _
- Я не могу оставить рубин _ без нарушения работы функций wx
Решение кажется неясным без того, чтобы обе стороны отказались от макросов.Я не нашел способа использовать пространства имен в своем собственном коде, чтобы обойти это - все еще пытаюсь ...