2012-05-21 28 views
19

Standart kitaplıkta (glibc) sys/mman.h'da __mmap gibi önde gelen çift alt çizgilerle tanımlanan işlevleri görüyorum. Amaç ne? Ve yine de, herhangi bir yerde bildirilmemiş gibi görünen bir işlevi nasıl arayabiliriz mmap. Bunun için sys/mman.h'u dahil ettik, ancak sys/mman.h, mmap bildirmiyor, yalnızca __mmap bildiriyor.Başlangıçta çift alt çizgi anlamı

GNU kılavuzunda itibaren
+3

Çift altını: http://stackoverflow.com/questions/224397/why-do-people-use-double-underscore-so-much-in-c (soru C++ diyor, ama '__' olduğunu ANSI C standardından da). Ayrıca sys/mman.h' sürümümde 'mmap' tanımlandı. – birryree

+0

'__mmap', glibc tarafından herhangi bir yerde bildirilmez. Ne hakkında konuştuğun hakkında bir fikrin yok. –

+0

Glibc başlıklarına değil, çekirdek başlıklarına bakıyor musunuz? –

cevap

16

:

bu kılavuzda belgelenmiş isimlerin bir alt çizgi ile başlaması tüm harici isimler (genel işlevler ve değişkenler) dahil saklıdır isimler ek olarak

('_') ve tüm kullanımından bağımsız olarak, iki alt çizgi veya bir alt çizgi ile başlayan büyük harfli harfler, ayrılmış isimlerdir. Bu şekilde kütüphane ve başlık dosyaları, kullanıcı programlarındaki isimlerle çakışma riski olmaksızın dahili amaçları için işlevleri, değişkenleri ve makroları tanımlayabilir.

Bu, C ve C++ satıcıları tarafından da kullanılan bir sözleşmedir.

5

Önde gelen çift alt çizgi içeren isimler, uygulama tarafından dahili kullanım için ayrılmıştır (derleyici/standart kitaplık/vb.). Kodunuzda asla görünmemeleri gerekir. Bu ayrılmış ad alanının amacı, programınızda kullanılan adlarla çakışma yapmadan kullanabilecekleri sistem üstbilgileri adlarını vermektir. ISO 9899

+0

Cevabınızı bana çok sevdim. –

6

: 2011

7.1.3 Rezerve tanımlayıcılar

Her başlık beyan veya ilişkili maddede sıralanan tüm tanımlayıcı tanımlamaktadır ve isteğe beyan veya ilgili gelecek kitaplığında listelenen tanımlayıcıları tanımlar her zaman kullanım için veya dosya kapsamı tanımlayıcıları olarak kullanım için ayrılmış olan alt ve tanımlayıcıları.

- Bir çizgi ve büyük harfle ya da başka bir alt çizgi ile başlar tüm tanımlayıcılar daima herhangi bir kullanım için ayrılmış bulunmaktadır.

- altçizgi ile başlayan tüm tanımlayıcılar, her zaman olağan ve etiket adı boşluklarında dosya kapsamı olan tanımlayıcılar olarak kullanım için her zaman ayrılmıştır.

İlgili konular