[英]how to use C++ macro in SWIG interface
%{
#define FOOBAR foobar
%}
%define MACRO(cl)
%pythoncode %{
def cl():
return
%}
%enddef
MACRO(FOOBAR)
我希望生成的SWIG Python代碼定義了foobar()
。 但是C宏沒有生效 - 我只有FOOBAR()
。
如何啟用SWIG接口以使用C宏?
你得到的非常接近。 具體來說,你有:
%{ #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本身讀取並解釋文件的內容)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.