আজ আমাকে basename()
ফাংশনটি ব্যবহার করতে হয়েছিল , এবং man 3 basename
( এখানে ) আমাকে কিছু অদ্ভুত বার্তা দিয়েছে:
মন্তব্য
বেসনাম () এর দুটি পৃথক সংস্করণ রয়েছে - উপরে বর্ণিত পসিক্স সংস্করণ এবং জিএনইউ সংস্করণ যা পরে পাওয়া যায়
#define _GNU_SOURCE
#include <string.h>
আমি ভাবছি এর #define _GNU_SOURCE
অর্থ কী: জিএনইউ-সম্পর্কিত লাইসেন্স দিয়ে আমি যে কোডটি লিখি তা কী দাগ দিচ্ছে? বা এটি সহজভাবে " ভাল, আমি জানি, ফাংশনগুলির এই সেটটি পসিক্স নয়, এইভাবে বহনযোগ্য নয়, তবে আমি যাহাই হউক না কেন " ব্যবহার করতে চাই "এর মতো কিছু বলতে সহজভাবে ব্যবহৃত হয়েছিল ।
যদি তাই হয় তবে কেন একটি ফাংশন বাস্তবায়ন বা অন্যটির জন্য কিছু অস্পষ্ট ম্যাক্রো সংজ্ঞায়নের পরিবর্তে লোককে বিভিন্ন শিরোনাম দেওয়া হবে না?
কিছু আমাকে বাগ দেয়: কম্পাইলার কীভাবে জানবে যে কার্য সম্পাদনের সাথে লিঙ্ক করতে কোন ফাংশন বাস্তবায়ন? এটিও কি এটি ব্যবহার করে #define
?
কেউ আমাকে কিছু পয়েন্টার আছে?
_GNU_SOURCE
অর্ডার পেতে হয়strfry
এবংmemfrob
।