ʹÓÃ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
Ïà¹ØÎĵµ£º
1.ÓÐn¸öÕûÊý£¬Ê¹Ç°Ãæ¸÷Êý˳ÐòÏòºóÒÆm¸öλÖã¬×îºóm¸öÊý±ä³É×îÇ°Ãæm¸öÊý¡£
#include<stdio.h>
int f(int *);
int main()
{
int *p,a[10];
for(p=a;p<a+10;p++)
scanf("%d",p);
f(a);
for(p=a;p<a+10;p++)
printf("%d ",*p);
return 0;
}
int f(int *a)
{
int i,*p ......
»Ø¹Ë֮ǰµÄƪ·ù£¬CÓïÑÔµÄÖ÷Ì岿·Ö»ù±¾ÒѾ½éÉÜÍêÁË¡£Ö®ËùÒÔûÓнéÉÜC++µÄÏà¹ØÌØÐÔÊÇÒòΪÔÚ֮ǰµÄÎÄÕÂÖÐCºÍC++ÔÚÕâЩ·½Ãæ¶¼Óй²ÐÔ£¬ËùÒÔÔÚÃæÏò¶ÔÏó֮ǰ¡£ÎÒÃÇÏȰÑÕâЩ¹²ÐÔ¸ø½éÉÜÍê¡£Ò²¾ÍÊÇ˵ÔÚ½éÉÜÃæÏò¶ÔÏó֮ǰ£¬ËùÓеÄÎÄÕ¶¼ÊÇCC++Öж¼ÄÜʹÓõġ£´ÓÕâµãÉÏÀ´¿´£¬ÏÖÔÚÕý¼«Á¦·Ü¶·ÓÚC++Õ½ÏßÉϵijõѧÕß»¹ÊǺÜÓÐÓô¦µÄ¡£
±¾Æª¼ ......
C/SģʽºÍB/SģʽµÄÇø±ð
¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£
¡«¡«Ê²Ã´ÊÇB/Sģʽ
B/Sģʽ£¬¼´ä¯ÀÀÆ÷/·þÎñÆ÷ģʽ£¬ÊÇÒ»ÖÖ´Ó´«Í³µÄ¶þ²ãCSģʽ·¢Õ¹ÆðÀ´µÄеÄÍøÂç½á¹¹Ä£Ê½£¬Æä±¾ÖÊÊÇÈý²ã½á¹¹C/Sģʽ¡£B/SÍøÂç½á¹¹Ä£Ê½ÊÇ»ùÓÚIntr ......
http://www.okpython.com/bbs/thread-3367-1-2.html
ÒÔ¶¯ÊÖʵ¼ùΪÈÙ , ÒÔÖ»¿´²»Á·Îª³Ü;
ÒÔ´òÓ¡ÈÕ־ΪÈÙ , ÒÔµ¥²½¸ú×ÙΪ³Ü;
ÒÔ¿Õ¸ñËõ½øÎªÈÙ , ÒÔÖÆ±íËõ½øÎª³Ü;
ÒÔµ¥Ôª²âÊÔΪÈÙ , ÒÔÈ˹¤²âÊÔΪ³Ü;
ÒÔÄ£¿é¸´ÓÃΪÈÙ , ÒÔ¸´ÖÆÕ³ÌùΪ³Ü;
ÒÔ¶à̬ӦÓÃΪÈÙ , ÒÔ·ÖÖ§ÅжÏΪ³Ü;
ÒÔPythonicΪÈÙ , ÒÔÈßÓàÍÏí³Îª³Ü;
ÒÔ×ܽá·ÖÏíΪ ......
1.±¾ÕÂ˼άµ¼Í¼£º
Example1:
char
*strcpy(char *target, const char *source) {
char *t = target;
// Copy the contents of source into target.
while(*source) *target++ = *source++;
// Null-terminate the
target.
*ta ......