Özellikleri `` C 11 & C 14 arızalı bsearch?
Benim cevap hem C 11 ve C 14 this question, aşağıdaki:
[C 11, C 14: 25.5/2]:
içeriğini aşağıdaki istisnalar dışında, Standart C ile aynı kitaplığı Başlığı<stdlib.h>
[C 11, C 14: 25.5/3]:
işlev imzası:bsearch(const void *, const void *, size_t, size_t, int (*)(const void *, const void *));
iki bildirimleri yerine:
extern "C" void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); extern "C " void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));
orijinal Deklarasyonu olarak aynı davranışı var.
Ancak
[C 11, C 14: 7.5/5]:
Eğer iki tanımlamalar ilan fonksiyonları ile aynı adı ve parametre-tip-listesi (8.3.5) üyelerinin aynı ad veya ilan nesneler ile aynı adı için üyelerin aynı ad ve tanımlamalar ver isimleri farklı dil bağlantıları, program hatalı biçimlendirilmiş; tanı. gerekirse tanımlamalar görünür farklı çeviri birimleri.[..]
Bu bir kusur mu?
CEVAP
Ama parametre türleri listesi aynı değildir. Biri compar
"C" dili bağlantı, diğeri, bir işlev işaretçisi ile "C" dili bağlantı. bir işlev için bir işaretçi.
C 11, 7.5 belirtir:
1. farklı dil ile İki fonksiyon türleri bağlantıları varsa aksi halde aynı olsalar bile farklı türleri vardır.
Bir 4bağlantı-şartname,belirtilen dil bağlantı işlevi için de geçerlidir tüm fonksiyon declarators türleri, dış bağlantı ile fonksiyon isimleri, ve dış ile değişken isimleri bağlantı içinde ilan ettibağlantı-şartname.[Örnek:
extern "C" void f1(void(*pf)(int)); // the name f1 and its function type have C language // linkage; pf is a pointer to a C function
7.5/1, 7.5/5 arasındaki görünüşteki çelişki fonksiyonu hakkında 1 görüşmeler gerçekleştiren zaman çözüldütürleri,5 adresleri işleviisimler.
Ne kadar duyarlı özellikleri kaldırmak...
Java özellikleri Java dilinde mevcut d...
Boş özellikleri underscore.js ile Nesn...
İlişkinin yabancı anahtar özellikleri ...
Gem sırasında çözülmemiş özellikleri::...