SORU
21 Mart 2011, PAZARTESİ


-D_XOPEN_SOURCE?/ne demek?

Geçenlerde gcc bu arg olmadan derlemek olmaz bazı kod ile karşılaştı. Gcc man sayfasına baktım, ama bu belirli seçenek bulamadı. XOPEN_SOURCE, ama ne küçük bir açıklaması olduğunu buldum.

Birisi ayrıntılı miyiz? Ama o ne yapıyor?- D_XOPEN_SOURCE farklı değerlere ayarlanabilir, 400, 600, böyle biliyorum

Teşekkürler.

CEVAP
20 NİSAN 2011, ÇARŞAMBA


Ne zaman

#define _XOPEN_SOURCE <some number>

ya

cc -D_XOPEN_SOURCE=<some number>

derleyici X/Açık ve POSIX standartlarında tanımlanmış olan bazı ekstra fonksiyonları tanımları vardır söyler.

Bu en son UNIX/BSD/Linux sistemleri var, ama muhtemelen Windows gibi diğer sistemlerde olmayan bazı ekstra işlevsellik verecektir.

Sayıları standart farklı sürümleri bakın.

İhtiyacınız olan, (varsa) dediğiniz her işlev için man sayfasına bakarak anlayabilirsiniz.

Örneğin, man strdup diyor ki:

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       strdup(): _SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE >= 500
       strndup(), strdupa(), strndupa(): _GNU_SOURCE

Bunlardan bir tane koymak gerekir anlamına gelir:

#define _SVID_SOURCE
#define _BSD_SOURCE
#define _XOPEN_SOURCE 500
#define _XOPEN_SOURCE 600
#define _XOPEN_SOURCE 700

kaynağınızın üst yapmadan önce dosya #includestrdup kullanmak isterseniz.

Ya da koyabilirsin

#define _GNU_SOURCE

tüm işlevler, Solaris, FreeBSD üzerinde derlemek zor olan bir dezavantajı vardır, Mac OS X, vb sağlayan var onun yerine.

İyi bir fikir için onay her adam sayfa önce böyle bir #include, #define veya kullanarak yeni bir fonksiyon, çünkü bazen onların davranış değişiklikleri bağlı olarak ne seçenekleri #defineler var, örneğin ile basename(3).

Ayrıca Bkz:

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • captainpuppys2000

    captainpuppy

    20 HAZİRAN 2013
  • funbro1

    funbro1

    11 Aralık 2007
  • ThePointblank

    ThePointblan

    18 Aralık 2006