Ne zaman yaparsan
#define _XOPEN_SOURCE <some number>
veya
cc -D_XOPEN_SOURCE=<some number>
derleyicinize X / Open ve POSIX standartlarında tanımlanan bazı ekstra işlevler için tanımları eklemesini söyler.
Bu size en yeni UNIX / BSD / Linux sistemlerinde var olan, ancak muhtemelen Windows gibi diğer sistemlerde bulunmayan bazı ekstra işlevler sağlayacaktır.
Numaralar, standardın farklı versiyonlarına atıfta bulunmaktadır.
Aradığınız her işlev için man sayfasına bakarak (varsa) hangisine ihtiyacınız olduğunu anlayabilirsiniz.
Örneğin man strdupşöyle diyor:
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
strdup(): _SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE >= 500
strndup(), strdupa(), strndupa(): _GNU_SOURCE
Bu, şunlardan birini koymanız gerektiği anlamına gelir:
#define _SVID_SOURCE
#define _BSD_SOURCE
#define _XOPEN_SOURCE 500
#define _XOPEN_SOURCE 600
#define _XOPEN_SOURCE 700
#includekullanmak istiyorsanız herhangi bir işlem yapmadan önce kaynak dosyanızın en üstünde strdup.
Veya koyabilirsin
#define _GNU_SOURCE
bunun yerine, Solaris, FreeBSD, Mac OS X, vb. üzerinde derlenememesinin dezavantajı ile tüm işlevleri etkinleştirir
Bir yapmadan önce her erkek sayfasını kontrol etmek iyi bir fikirdir #include, #definebazen onların davranışları nasıl seçeneklere bağlı olarak değişir ve çünkü, ya da yeni bir fonksiyonu kullanarak #defineörneğin, sahip s basename (3) .
Ayrıca bakınız: