SORU
7 NİSAN 2011, PERŞEMBE


&Quot nedir;#_GNU_SOURCE" define anlamına gelmez mi?

Bugün basename() fonksiyonu kullanmak zorunda kaldım, ve man 3 basename (here) bana garip bir mesaj verdi:

Notlar

İki farklı versiyonu var() basename-POSIXsürüm üzerinde nitelendirdiGNU sürümübir sonra alır

#define _GNU_SOURCE
#include <string.h>

#define _GNU_SOURCE Bu ne demek, ben merak ediyorumkirletiyorGNU bir lisans ile yazıyorum kodu? Ya da sadece derleyici gibi bir şey derdi "Evet, biliyorum, bu fonksiyonların POSIX ayarlayın, böylece taşınabilir değildir, ama yine de kullanmak istiyorum".

Eğer öyleyse, neden insanlar farklı üstbilgiler, bazı karanlık ortam değişkeni bir işlev uygulama ya da diğer almak için tanımlamak yerine vermiyorsun?

Bir de beni deli ediyor: nasıl derleyici yürütülebilir ile bağlantı kurmaya yarayan biliyor mu? Bu kullanım #define de mi?

Herkes bana bazı işaretçiler var mı?

CEVAP
7 NİSAN 2011, PERŞEMBE


_GNU_SOURCE tanımlama vardır lisans ve her şeyi ile (olmayan)taşınabilir kod yazma ile ilgisi yok. _GNU_SOURCE tanımladığınız alırsınız:

  1. standart olmayan GNU/Linux uzantı işlevleri çok erişim
  2. POSIX standardı (genellikle iyi bir neden, daha iyi alternatifleri ile değiştirilir, ya da özellikle eski uygulamalara bağlı olmak gibi) ihmal eden geleneksel işlevlerine erişim
  3. olamaz taşınabilir olması, ama bazen sistemin hayata geçirilmesi için gereken alt düzey işlevleri erişim mount, ifconfig, gibi kamu hizmetleri vb.
  4. GNU Millet fonksiyonları nasıl davranması gerektiği konusunda Standartları Kurulu ile aynı fikirde değil ve kendi şey yapmaya karar POSIX belirtilen fonksiyonları çok bozuk davranış.

Sürece farkındasınız bu şeyler, olmaması gerekir sorun tanımlama _GNU_SOURCE fakat sen önlemek tanımlanması ve bunun yerine tanımlama _POSIX_C_SOURCE=200809L _XOPEN_SOURCE=700 zaman mümkün sağlamak için programlarınızı taşınabilir.

Özellikle, _GNU_SOURCE gelen şeyler gerekiraslayukarıdaki #2 ve 4.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Helder Barreto

    Helder Barre

    22 Mayıs 2006
  • jat4011

    jat4011

    16 EKİM 2010
  • Sali Kaceli

    Sali Kaceli

    24 ŞUBAT 2009