То, что у вас есть, очень близко. В частности у вас есть:
%{
#define FOOBAR foobar
%}
Однако %{ %}
просто делает SWIG передать, что содержится из сгенерированной .cxx файла - не разобрать или считается, что там. По сути, SWIG игнорирует это #define
и позволяет компилятору позже позаботиться об этом.
Таким образом, вы можете просто исправить его:
#define FOOBAR foobar
%define MACRO(cl)
%pythoncode %{
def cl():
return
%}
%enddef
MACRO(FOOBAR)
, который работает, как вы надеялись, потому что SWIG препроцессор теперь получает, чтобы увидеть макрос.
. (Примечание: если вы использовали #include
внутри %{ %}
вы хотите использовать вместо %include
по аналогичной причине снова %include
причины Swig себя читать и интерпретировать содержимое файла)
ДУХ! В руководстве так говорится. Я просто не смог правильно оценить, что он говорит. –