Исключая генерацию интерфейса для блока кода ifdef

Я пытаюсь сгенерировать интерфейс Go для библиотеки C ++. Один из заголовков библиотеки имеет такой блок кода

library.h

...
#ifndef DISABLE_FEATURE_X
struct TypeX
{
TypeX();
{
...
}
};
#endif
...

Затем я включаю заголовок в интерфейс, как показано ниже

library.i

%{
#include <library.h>
%}
...
%include <library.h>

Когда я генерирую интерфейс Go с определенным макросом DISABLE_FEATURE_X, Swig генерирует код интерфейса для TypeX хотя это исключено макросом DISABLE_FEATURE_X,

Как мне сказать Swig исключить блок кода при создании интерфейса?

0

Решение

Самый простой способ сделать это — определить макрос внутри интерфейса SWIG, чтобы препроцессор SWIG не видел функции:

%{
#include <library.h>
%}
...
#define DISABLE_FEATURE_X
%include <library.h>

должен сделать свое дело.

Сам SWIG также поддерживает аргумент командной строки -D, поэтому, если вы предпочитаете, вы также можете вызвать swig -DDISABLE_FEATURE_X ... так же, как вы бы для компилятора

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector