मैं जिस कोडबेस के साथ काम करता हूं वह ऐतिहासिक रूप से प्रयास किया गया है - उद्देश्य से - stdio.h पर निर्भरता से बचने के लिए। इसमें स्वयं का प्रिंट स्वरूपण और तंत्र है, और वे हैं printf इत्यादि के बजाय क्या उपयोग किया जाना चाहिएstdio.h (या अन्य मानक शीर्षलेख) को शामिल करने से रोकें
लेकिन कोई भी इतनी बार निर्भरता जोड़ता है जिसे ध्यान में रखना और निकाला जाना है। इसलिए मैं मामलों के लिए सबसे आसान के लिए एक अलार्म करने की कोशिश की:
#if !defined(NDEBUG)
void printf(float dont_link_with_stdio_h);
#endif
जीसीसी लोग भी आसान त्रुटियों को रोकने की तर्ज पर सोच कर दिया गया है लगता है, एक उपयोगी संदेश है, क्योंकि अगर आप ऐसा करते हैं ... चाहे आपने <stdio.h>
शामिल किया है या नहीं। में निर्मित समारोह 'printf'
के लिए
परस्पर विरोधी प्रकार के होते एक तरह से इस चेतावनी को बंद करने के लिए (
-fno-builtin
) है। और ऐसे सभी प्रकार के दृष्टिकोण हैं जो चीजों को उन चीज़ों के लिए प्रतीक डंप फ़िल्टर करते हैं, जिन्हें आप वहां नहीं रखना चाहते हैं ...लेकिन क्या वहां एक मामूली आसान गैर-चेतावनी-कारण है (यदि आपने नहीं किया stdio.h शामिल करें) किसी को चेतावनी देने का तरीका है कि उन्होंने एक अवांछित printf उपयोग पेश किया है?
क्या आप लाइब्रेरी (.lib) के संकलित संस्करण को नहीं हटा सकते हैं ताकि यह संकलित/लिंक न हो? –
@LeeTaylor मैं संकलन पर्यावरण के साथ छेड़छाड़ नहीं करना चाहता, जिसका उपयोग अन्य चीजों के लिए किया जाता है जिसमें इस पुस्तकालय को शामिल किया गया है (और वे चीजें stdio.h शामिल करने के लिए स्वतंत्र हैं)। मैं जिस विधि का प्रयास कर रहा था और '-फनो-बिल्टिन' जोड़ रहा हूं, उसका उपयोग करने से कुछ कम घुसपैठ की तलाश में हूं ... उदा। कुछ ऐसा जो अकेले स्रोत के अंदर किया जा सकता है। – HostileFork
'grep printf * .c'? –