วันนี้ฉันต้องใช้basename()
ฟังก์ชั่นและman 3 basename
( ที่นี่ ) ให้ข้อความแปลก ๆ แก่ฉัน:
หมายเหตุ
มีbasenameสองเวอร์ชันที่แตกต่างกัน- เวอร์ชันPOSIX ที่อธิบายไว้ข้างต้นและเวอร์ชัน GNUซึ่งเวอร์ชันหนึ่งได้รับหลังจาก
#define _GNU_SOURCE
#include <string.h>
ฉันสงสัยว่าสิ่งที่นี้#define _GNU_SOURCE
หมายถึง: มันtaintingที่ผมเขียนโค้ดที่มีใบอนุญาต GNU เกี่ยวข้อง? หรือจะเป็นเพียงแค่ใช้ในการบอกสิ่งที่คอมไพเลอร์เช่น " ดีฉันรู้ว่าชุดของฟังก์ชั่นนี้ไม่ได้เป็น POSIX จึงไม่ได้พกพา แต่ผมอยากจะใช้มันต่อไป "
ถ้าเป็นเช่นนั้นทำไมไม่ให้คนส่วนหัวที่แตกต่างกันแทนที่จะต้องกำหนดแมโครที่คลุมเครือเพื่อรับฟังก์ชั่นหนึ่งหรืออีกอันหนึ่ง?
มีข้อบกพร่องบางอย่างสำหรับฉันด้วย: คอมไพเลอร์รู้ได้อย่างไรว่าการใช้งานฟังก์ชั่นใดเพื่อเชื่อมโยงกับปฏิบัติการ? มันใช้สิ่งนี้#define
ด้วยหรือไม่
ใครมีพอยน์เตอร์ให้ฉันบ้าง
_GNU_SOURCE
อยู่ในลำดับที่จะได้รับและstrfry
memfrob