如何处理宏的重新定义?

时间:2017-04-21 10:00:34

标签: swig

我的C代码就像轰鸣声。

// file.c

#include <stdio.h>
#define value 10
#define value 20
void  func()
{
    printf("%d\n",value);
}

我的界面文件就像下面一样。

//sample.i
%module sample
%{
    #include "func.c"
%}
%include "func.c"`

当我运行命令&#34; swig -python sample.i&#34;时,我收到的信息如下! 宏观价值&#39;重新定义。先前对“价值”的定义&#39;在那里。

如何处理?

1 个答案:

答案 0 :(得分:1)

有趣的是,swig认为这是一个错误,但编译器(无论如何)都认为它是一个警告。如果您无法修复标题,则可以执行以下操作:

//sample.i
%module sample
%{
    #include "func.c"
%}

#define value 20
void  func()
{
    printf("%d\n",value);
}

基本上,展开内联头文件并从swig处理中删除有问题的行。否则,请修复标题。