2013-05-22 36 views
5

Ben standart C değildi sanan bazı fonksiyonların (sscanf_s ve sprintf_s) kullanımını yapılmış answering a question iken, Daniel FischerUygun bir uygulama için C11'deki Ek K desteği gereklidir mi? Söz konusu fonksiyonlar Ek K'da tanımlanmış olduğunu

Genellikle normatif o anlamaya dikkatimi çekti, standardı tanımlamanıza yardımcı olur. Ancak, C Standardının bir eki geleneksel olarak sadece bilgilendirici olarak ele alınmıştır. Ek K, C11 Standardında normatif olarak etiketlenmiştir. "Güvenli" fonksiyonları tanımlar.

Bu, bu işlevleri sağlamayan bir derleyicinin C11 Standardına uymadığı anlamına mı geliyor?

Ben sadece bana taslak C11 Standart yoktur, ancak Ek K normatif olduğunu belirtmektedir, ancak standardın kütüphane bölümü tanımında Ek K'da bir not ele fonksiyonların bahsetmemektedir runtime-constraint, Ek K'nin bir uzantı olduğunu ima eder gibi görünüyor.

Normatif bir Ek, ​​yalnızca isteğe bağlı bir uzantı tanımlar mı?

+0

Ekler D, F, G, K, L, ISO/IEC 9899: 2011'de normatiftir. Diğerleri (A, B, C, E, H, I, J) bilgilendiricidir. –

cevap

12

Ek K isteğe bağlıdır; o kadar kendini söylüyor.

bakınız K.2 paragraf 2:

__STDC_LIB_EXT1__ bu ekte şartnamelere uygun olacaktır tanımlayan bir uygulama. bir dipnot ile

: __STDC_LIB_EXT1__ tanımlamaz

Uygulamalar bu özelliklerine uyacak şekilde gerekli değildir.

Ve paragraf 3 der ki:

o yüzden Madde 7.

adlandırılmış bendler icabatına paralel yapısına birleşti sanki

alt bölüm K.3 okunmalı

kütüphane bölümünde, madde 7'de belirtilmesi gerekli değildir (ya da en azından standardın yazarlarının gerekli olmadığını hissetmesi).

__STDC_LIB_EXT1__'u tanımlayan bir uygulama, 201112L; Hem N1570 hem de piyasaya sürülen C11 standardı bunu yanlış anladı, ancak Teknik Bir Doğrulama'da düzeltildi.

+0

Teşekkür ederim. Diğer normatif ekleri dolaştım ve görüyorum. bunların hepsi Ek D hariç olmak üzere, uygunluklarını beyan etmek için bir miktar makro sağladı. Bu, Ek D'nin gerekli olduğu anlamına mı geliyor? – jxh

+0

Tanımlayıcıların sözdizimini tanımlayan Evet, 6.4.2.1, koşulsuz olarak Ek D'ye atıfta bulunuyor. –

3

Ek K'yi desteklediğini iddia eden bir uygulamanın buradaki gereksinimleri karşılaması gerektiği anlamında "normatif" dir. Zorunlu değil.

+0

Bu nedenle, yalnızca standardın uygun bir ekinde tanımlanan özellikler kullanılarak yazılmış bir program kesinlikle uyumlu bir program değil midir? – jxh

+4

@ user315052 "Kesinlikle uyumlu bir program koşullu özellikleri kullanabilir (bkz. 6.10.8.3) kullanımın ilgili makroyu kullanarak uygun bir koşullu ön işlem önleme yönergesiyle korunmasını sağladı. " –

+0

@DanielFischer: Gotcha, teşekkürler. Keith Thompson'ın cevabını gördükten sonra bunu anladım. – jxh

İlgili konular