2012-10-29 3 views
6

मुझे 300.c फ़ाइलों के शीर्ष पर #define शामिल करने की आवश्यकता है। मैं कोड को नहीं बदलना चाहूंगा क्योंकि यह ओपन सोर्स कोड है, लेकिन अगर मुझे बस सभी फाइलों को संशोधित करने के लिए एक स्क्रिप्ट लिखनी है। क्या #define जोड़ने के लिए जीसीसी का उपयोग करने का कोई तरीका है या हेडर फ़ाइल संकलन के दौरान प्रत्येक स्रोत फ़ाइल के शीर्ष पर शामिल है?संकलन समय पर सभी .c स्रोत फ़ाइलों में # परिभाषा शामिल है

#define malloc MYmalloc 
+0

मुझे लगता है कि इनमें से अधिकतर .c फ़ाइलें सीधे या परोक्ष रूप से '# शामिल करें '। हमम ... – aschepler

उत्तर

16

आप gcc विकल्प के लिए -Dmalloc=MYmalloc पारित कर सकते हैं: #define यह है।

-D विकल्प के बारे में अधिक जानकारी के लिए:

http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html

ध्यान दें कि अगर आप डीबगिंग उद्देश्यों के लिए malloc समारोह के व्यवहार को संशोधित करना चाहते हैं, तो आप भी रुचि glibcmalloc हुक में हो सकता है:

http://www.gnu.org/software/libc/manual/html_node/Hooks-for-Malloc.html

+0

धन्यवाद ओह, मैं इसे आज़माउंगा और मुझे लगता है कि यह मेरी समस्याओं का समाधान करेगा। मैं मॉलोक हुक और एलडी_PRELOAD समाधान के बारे में जानता हूं लेकिन वे मेरी स्थिति के लिए उपयुक्त नहीं हैं। किसी भी तरह से अन्य दर्शकों के लिए इसका उल्लेख करना अच्छा है। –

3

जीसीसी विकल्प -D:

-D name 
    Predefine name as a macro, with definition 1. 

-D name=definition 
    .... 

हां, तो आपके मामले में, gcc ... -Dmalloc=MYmalloc

0

आप मैं नहीं बल्कि रनटाइम पर अपने कार्यान्वयन के पूर्व लोड हो रहा है के माध्यम से अपने कस्टम कोड प्रदान करने के लिए सिफारिश करेंगे एक कस्टम कार्य करने के लिए malloc() कॉल रीडायरेक्ट करने के लिए प्रयास करते हैं, तो। विवरण के लिए this प्रश्न देखें।

संबंधित मुद्दे