2.4 SWIG支持的C/C++语言特性

SWIG项目的主要目的之一就是为了使语言间的绑定变得更加简单。尽管我们已经给出了几个例子,SWIG也有相当的能力支持绝大多数的C++特性,包括:

  • 支持C99预处理的全部特性
  • 支持ANSI C和C++的数据类型
  • 函数、变量和常量
  • 单一或多重继承
  • 函数和方法重载
  • 操作符重载
  • C++模板(包括成员模板、特化、偏特化)
  • 命名空间
  • 可变长度参数
  • C++智能指针

大部分的C++11也都支持。详细信息参考C++11章节。

需要重点强调的是SWIG不像那些看起来显然就是简单的包装工具一样,是一个简单的C++词法解析工具。SWIG不仅解析C++语法,它实现了C++的全部类型系统,可以理解C++语义。SWIG通过这些信息生成代码。正因如此,SWIG可以处理各种 C++程序中的脏活累活。 事实上SWIG对C++编译器很少有限制。