簡體   English   中英

如何在SWIG界面中使用C ++宏

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM