无聊之人--除了技术,还是技术,你懂得
分类: C/C++
2013-01-26 12:55:10
在读python源码分析的时候,一上来便被作者弄蒙了,结构体里面只有一行PyObject_HEAD
?那是如何实现的呢?原来python的是实现着用宏来实现,具体的代码如下:
[object.h] typedef struct _object {
PyObject_HEAD
} PyObject;
/* PyObject_HEAD defines the initial segment of every PyObject. */ #define PyObject_HEAD \\ _PyObject_HEAD_EXTRA \\ int ob_refcnt; \\ struct _typeobject *ob_type;这样一看,第一次看到macro这么用,便动手试了一把,偶也是采用宏续行
#include程序运行正常,然后STFW后,发现macro中确实有这功能,但是仅限于宏,#include #define head int a; \\ int b; typedef struct { head }h; int main(int argc,char * argv[]){ h m; m.a=5; m.b=6; printf("%d %d\\r\\n",m.a,m.b); }
如果串长于一行,可以在该行末尾用一反斜杠' \'续行。
C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)
参考文章
http://www.cnblogs.com/flywuya/archive/2010/12/04/1896121.html
http://blog.csdn.net/balabalamerobert/article/details/567586 python源码分析