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++编译器很少有限制。