ʹÓÃCÓïÑÔÀ©Õ¹Python£¨Ò»£©
¿ª·¢»·¾³£ºUbuntu9.10,python2.6,gcc4.4.11,ubuntuϵÄpythonÔËÐаüºÍ¿ª·¢°üÊÇ·Ö¿ªµÄ£¬Òò´ËÐèÒªÔÚÐÂÀûµÃÀïÃæ°²×°python-all-dev,´Ó¶ø¿ÉÒÔÔÚ´úÂëÖÐÒýÓÃpythonµÄÍ·ÎļþºÍ¿â¡£2.ÏÂÃæÊÇÒ»¸ö×î¼òµ¥µÄ¿ÉÒÔ¹©pythonµ÷ÓõÄcÀ©Õ¹Ä£¿é£¬¼ÙÉèc³ÌÐòÎļþÃûΪfoo.c:´úÂë#include <Python.h>
static PyObject* foo_bar(PyObject* self, PyObject* args) {
Py_RETURN_NONE;
}
static PyMethodDef foo_methods[] = {
{"bar",(PyCFunction)foo_bar,METH_NOARGS,NULL},
{NULL,NULL,0,NULL}
};
PyMODINIT_FUNC initfoo() {
Py_InitModule3("foo", foo_methods, "My first extension module.");
} ÎÒÃÇ¿ÉÒÔ½«ÉÏÊöÄ£¿é·Ö³É3¸ö²¿·Ö£º1£©cÄ£¿éÏë¶ÔÍⱩ¶µÄ½Ó¿Úº¯Êý¡£2£©Ìṩ¸øÍⲿµÄpython³ÌÐòʹÓõÄÒ»¸öcÄ£¿éº¯ÊýÃû³ÆÓ³Éä±í¡£3£©cÄ£¿éµÄ³õʼ»¯º¯Êý¡£Ä£¿éµÄµÚÒ»Ðн«Python.hÒýÈ뵽ģ¿éÖУ¬Õâ¸öÎļþ½«Ê¹µÃÄãµÄÄ£¿é¿ÉÒÔhook½øpythonµÄ½âÊÍÆ÷£¬´Ó¶ø¿ÉÒÔΪÍⲿµÄpython³ÌÐòËùʹÓá£cÄ£¿éÖеĺ¯ÊýÇ©ÃûÒ»°ãÓÐÏÂÁÐÈýÖÖÐÎʽ£ºPyObject* MyFunction(PyObject* self, PyObject* args);
PyObject* MyFunctionWithKeywords(PyObject* self, PyObject* args, PyObject* kw);
PyObject* MyFunctionWithNoArgs(PyObject* self); Ò»°ãÎÒÃÇʹÓõÄÊǵÚÒ»ÖÖ·½Ê½£¬º¯ÊýµÄ²ÎÊý½«»áÒ»¸öÔª×é(tuple)µÄÐÎʽ´«½øÀ´£¬Òò´ËÎÒÃÇÔÚcÄ£¿éµÄº¯ÊýÖÐÐèÒª¶ÔÆä½øÐнâÎö¡£PythonÖв»ÄÜÏócÓïÑÔÒ»ÑùÉùÃ÷Ò»¸övoidÀàÐ͵ĺ¯Êý£¬Èç¹ûÄã²»Ï뺯Êý·µ»ØÒ»¸öÖµµÄ»°£¬ÄǾͷµ»ØÒ»¸öNONE,ÔÚÕâÀïÎÒÃÇ¿ÉÒÔͨ¹ýPythonÍ·ÎļþÖеÄÒ»¸öºêPy_RETURN_NONEÀ´ÊµÏÖ¡£CÄ£¿éÖеĺ¯ÊýÃû³ÆÆäʵ¶ÔÍⲿÀ´ËµÊDz»¿É¼ûµÄ£¬Òò´Ë¿ÉÒÔËæ±ãÄãÃüÃû£¬Ò»°ãÎÒÃÇ¿ÉÒÔʹÓÃstaticº¯Êý£¨ÕâÔÚCÓïÑÔÀï±íʾÔÚµ±Ç°ÎļþÒÔÍâÊDz»¿É¼ûµÄ£©¡£±¾Îĺ¯ÊýÃüÃû·½Ê½²ÉÓÃÄ£¿éÃû¼ÓÉϺ¯ÊýÃû£¬ÀýÈçfoo_bar,Õâ±íʾÔÚÄ£¿éfooÖлáÓÐÒ»¸öbarº¯Êý¡£È»ºó¾ÍÊǺ¯ÊýÓ³Éä±íÁË£¬ËüÊÇÒ»¸öPyMethodDef½á¹¹ÌåÊý×飬struct PyMethodDef {
char* ml_name;
PyCFunction ml_meth;
&nb
Ïà¹ØÎĵµ£º
#include <iostream>
using namespace std;
void main()
{
char *p,*q;
p = "abcde";
q = p + 3;
*q = 't';
cout<<p<<endl;
cout<<q<<endl;
}
Á½ÖÖÓïÑÔ±àÒë¶¼¿ÉÒÔͨ¹ý
µ±Ö´Ðе½
*q = 't';
ʱ£¬C++³ÌÐò³öÏÖÄÚ´æ·ÃÎÊ´íÎó£¬C³ÌÐò¿ÉÒ ......
»Ø¹Ë֮ǰµÄƪ·ù£¬CÓïÑÔµÄÖ÷Ì岿·Ö»ù±¾ÒѾ½éÉÜÍêÁË¡£Ö®ËùÒÔûÓнéÉÜC++µÄÏà¹ØÌØÐÔÊÇÒòΪÔÚ֮ǰµÄÎÄÕÂÖÐCºÍC++ÔÚÕâЩ·½Ãæ¶¼Óй²ÐÔ£¬ËùÒÔÔÚÃæÏò¶ÔÏó֮ǰ¡£ÎÒÃÇÏȰÑÕâЩ¹²ÐÔ¸ø½éÉÜÍê¡£Ò²¾ÍÊÇ˵ÔÚ½éÉÜÃæÏò¶ÔÏó֮ǰ£¬ËùÓеÄÎÄÕ¶¼ÊÇCC++Öж¼ÄÜʹÓõġ£´ÓÕâµãÉÏÀ´¿´£¬ÏÖÔÚÕý¼«Á¦·Ü¶·ÓÚC++Õ½ÏßÉϵijõѧÕß»¹ÊǺÜÓÐÓô¦µÄ¡£
±¾Æª¼ ......
µ±³¢ÊÔ´ÓÎļþ¶ÁÈë×Ö·ûʱ£¬getc()º¯Êý»á·µ»ØEOF£¬ËùÒÔ³ÌÐò»áÔÚÏÂÒ»´Î¶Áȡʱ²Å»á·¢ÏÖÎļþ½áβ¡£´Ëʱ³ÌÐòÔÚÊÔͼ¶ÁÈ¡¿ÕÎļþ£¬¿ÉÄܻᷢÉúһЩÎÊÌâ¡£ËùÒÔÓ¦µ±ÔÚÑ»·Èë¿Ú´¦½øÐÐÅжϡ£
int ch;
FILE * fp;
fp = fopen ("test","r");
while ((ch = getc(fp) != EOF)
{
putchar (ch);
} ......
²Ù×÷º¯Êý,ËùÔÚº¯Êý¿âΪstring.h¡¢mem.h
mem…²Ù×÷´æÖüÊý×é
void *memccpy(void *destin,void *source,unsigned char ch,unsigned n)
void *memchr(void *s,char ch,unsigned n)
void *memcmp(void *s1,void *s2,unsigned n)
int memicmp(void *s1,void *s2,unsigned n)
void *memmove(void *destin ......