इस धारणा के तहत चल रहा है कि सीएच फ़ाइल में केवल # परिभाषाएं हैं (और इसलिए इसके खिलाफ लिंक करने के लिए बाहरी कुछ नहीं है), तो निम्नलिखित स्विग 2.0 (http://www.swig.org/) के साथ काम करेंगे और पायथन 2.7 (परीक्षण)। मान लीजिए फ़ाइल युक्त बस के रूप में परिभाषित ऊपर just_defines.h नाम है:
#define FOO_A 0x3
#define FOO_B 0x5
तब:
swig -python -module just just_defines.h ## generates just_defines.py and just_defines_wrap.c
gcc -c -fpic just_defines_wrap.c -I/usr/include/python2.7 -I. ## creates just_defines_wrap.o
gcc -shared just_defines_wrap.o -o _just.so ## create _just.so, goes with just_defines.py
उपयोग:
$ python
Python 2.7.3 (default, Aug 1 2012, 05:16:07)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import just
>>> dir(just)
['FOO_A', 'FOO_B', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_just', '_newclass', '_object', '_swig_getattr', '_swig_property', '_swig_repr', '_swig_setattr', '_swig_setattr_nondynamic']
>>> just.FOO_A
3
>>> just.FOO_B
5
>>>
ज फ़ाइल भी प्रवेश बिंदुओं में शामिल है, तो आपको उन प्रविष्टि बिंदुओं को हल करने के लिए कुछ लाइब्रेरी (या अधिक) के विरुद्ध लिंक करने की आवश्यकता है। इससे समाधान थोड़ा और जटिल हो जाता है क्योंकि आपको सही libs का शिकार करना पड़ सकता है। लेकिन "केवल मामला परिभाषित करता है" के लिए आपको इसके बारे में चिंता करने की ज़रूरत नहीं है।
संभव डुप्लिकेट (http://stackoverflow.com/questions/2654329/reliably-converting-c-preproce ssor-मैक्रो-टू-अजगर-कोड) –
मुझे लगता है कि इस http://stackoverflow.com/questions/2654329/reliably-converting-c-preprocessor-macros-to-python-code –
@MattiLyra को डुप्लिकेट है - शायद । लेकिन इस प्रश्न के रूप में वर्तमान में कोई जवाब नहीं है, यह विशेष रूप से सहायक बिंदु नहीं है। –