आज मुझे basename()
फंक्शन का उपयोग करना था , और यहाँman 3 basename
( यहाँ ) ने मुझे कुछ अजीब संदेश दिया:
टिप्पणियाँ
बेसनेम के दो अलग-अलग संस्करण हैं () - ऊपर वर्णित POSIX संस्करण, और GNU संस्करण , जो एक के बाद मिलता है
#define _GNU_SOURCE
#include <string.h>
मैं सोच रहा हूँ कि इस #define _GNU_SOURCE
का अर्थ है: यह है tainting एक जीएनयू से संबंधित लाइसेंस के साथ कोड मैं लिखने? या यह केवल संकलक को " वेल, मुझे पता है, जैसे कुछ बताने के लिए उपयोग किया जाता है , इस प्रकार का कार्य POSIX नहीं है, इस प्रकार पोर्टेबल नहीं है, लेकिन मैं इसे वैसे भी उपयोग करना चाहता हूं "।
यदि ऐसा है, तो लोगों को अलग-अलग हेडर क्यों नहीं दिए जाते हैं, बजाय एक फ़ंक्शन कार्यान्वयन या दूसरे को प्राप्त करने के लिए कुछ अस्पष्ट मैक्रो को परिभाषित करने के लिए?
कुछ मुझे भी परेशान करता है: संकलक को यह कैसे पता चलता है कि क्रियान्वयन निष्पादन योग्य के साथ जोड़ने के लिए कौन सा कार्य करता है? क्या यह भी इसका उपयोग करता है #define
?
किसी ने मुझे देने के लिए कुछ संकेत हैं?
_GNU_SOURCE
पाने के लिए हैstrfry
औरmemfrob
।