Hari ini saya harus menggunakan basename()
fungsi, dan man 3 basename
(di sini ) memberi saya beberapa pesan aneh:
Catatan
Ada dua versi basename () yang berbeda - versi POSIX yang dijelaskan di atas, dan versi GNU , yang diperoleh setelahnya
#define _GNU_SOURCE
#include <string.h>
Saya bertanya-tanya apa #define _GNU_SOURCE
artinya ini : apakah ini mencemari kode yang saya tulis dengan lisensi terkait GNU? Atau apakah itu hanya digunakan untuk memberi tahu kompiler sesuatu seperti " Yah, saya tahu, rangkaian fungsi ini bukan POSIX, jadi tidak portabel, tetapi saya tetap ingin menggunakannya ".
Jika demikian, mengapa tidak memberi orang header yang berbeda, daripada harus mendefinisikan beberapa makro yang tidak jelas untuk mendapatkan satu implementasi fungsi atau yang lainnya?
Sesuatu juga mengganggu saya: bagaimana kompiler mengetahui implementasi fungsi mana yang harus dihubungkan dengan yang dapat dieksekusi? Apakah ini menggunakan ini #define
juga?
Adakah yang punya beberapa petunjuk untuk memberi saya?
_GNU_SOURCE
adalah untuk mendapatkanstrfry
danmemfrob
.