Hala Microsoft nedeniyle sahte-C89 kodu (tam C99 uyumlu değil) yazıyorum itiraf etmeliyim. Windows tarafı için MSVC'ye yoğun bir şekilde yaslanıyorum ve hala C99 uyumlu değiller, bunun yerine odaklarının çoğunu C ++ 17 ve sonrasında yerleştiriyorlar.
Bunun üzerine, eklenti geliştiricilerinin eklenti geliştirmeleri için MSVC ve bazıları hala MSVC 2010'u kullandığı C SDK'ları üzerinde çalışıyorum. Bu yüzden hala çok egzotik olmayan platformlarda yaygın olarak kullanılan popüler derleyiciler var (siz düşünmedikçe) Windows egzotik) henüz C99'u tam olarak uygulamaz. En büyük derleyici yelpazesi ile geniş uyumluluğu hedeflediğinizde (SDK'nın C ++ ile değil C dilinde yazılmasının ana nedenlerinden biri), bunların arkasında hala kullanılan bir dizi (en azından MSVC) vardır. C desteği söz konusu olduğunda. C99'dan bu yana neredeyse birkaç on yıl geçti ve hala VLA'larımız yok, örneğin MSVC AFAIK'te (henüz MSVC 2017'de kontrol etmedim, ancak Microsoft'un C'ye karşı tutumu göz önüne alındığında, C99 ile çok daha uyumlu olduğundan şüpheliyim) .
Ve ne yazık ki hala tam olarak C99 uyumlu olmayan iyi optimize ediciler ve hata ayıklayıcılarla oldukça iyi olan yeni derleyiciler var. Tabii ki bu olmasaydı, C11'in her yerine atlardım.
Eklentiler ve MSVC ile kaynak uyumluluğunun yanı sıra, diğer dillerle birlikte çalışır. Diğer bazı diller SDK'yı bir FFI aracılığıyla kullanır ve bu FFI'lerin bazıları sadece C89'u anlar. Bir dylib'den fonksiyonları içe aktarırken anlamayabilirler bool
veya _Bool
basit bir örnek olabilirler ve sadece anlayabilirler int
.
Evet, lehte argüman taşınabilirliktir, ancak soru aslında sadece bir C89 derleyicisini kullanabilen ancak yeni yazılım dağıtımlarını derleyen varsayımsal olmayan sistemler olup olmadığıdır. Yani yeni bir C projesine başlamış olsaydım, C89'a bağlı kalmanın potansiyel kullanıcı sayısını artıp arttıramayacağına nasıl karar verebilirim?
Sadece bunu fark ettim ama bir çeşit yankılama Blrfl
, C99 ve C11'i kullanarak üretkenlik kazancı benim durumumda çok büyük değilken, insanların eklentilerini MSVC'ye yazmalarına izin verme yeteneğini kaybetmek büyük bir maliyet olabilir (özellikle çalıştığım ürün açık, Windows tarafında en büyük pazar payına sahiptir ve ortalama bir kullanıcı genellikle birçok üçüncü taraf eklentisi satın alır ve indirir). Üzerinde çalıştığım ürün türü, programcılar / senaryo yazarları için bir geliştirme ortamı ve sanatçılar için bir kullanıcı sonu ürünü arasında neredeyse yarı yolda, çünkü birçok insan yeni yeteneklere izin vermek ve bir özel efekt elde etmek için üzerinde yeni şeyler geliştirmek istiyor. tür insanlar henüz görmedim. Benim durumumda C89'u en azından SDK için tercih etmek oldukça basit bir karardı.
Sanırım etrafınızdaki derleyicilere bir bakmanız ve hedef demografinizi bulmanız gerekiyor. Windows için bir eklenti mimarisi geliştirmiyorsanız veya herhangi bir gömülü programlama yapmıyorsanız veya orada en geniş derleyici ve diller tarafından kullanılabilecek bir yazılım geliştirme kiti oluşturmaya çalışıyorsanız, C99 + için işlere kolayca ulaşılmasını sağlar uzakta. Ayrıca, C99'dan itibaren ne kadar verimlilik artışı elde ettiğinizi düşünün. VLA'lar gibi şeylerden o kadar çok faydalanamıyorum çünkü veri uyuyor ve başka türlü yığın yaparken yığını kullanmak için yeterince basit yollara güveniyorum.
Ancak, MSVC gibi popüler derleyicilerden FFI'lara kadar popüler derleyicilerden, C işlevlerini doğrudan bir dylib'den içe aktarabilmeleri ve çağırabilmeleri açısından havalı olan birçok şey var. zamanlar. Bu nedenle, alan adınıza bağlı olarak, bir tür estetik için daha eski ve standartlaştırmayı tercih etmekten çok daha pratik iş şeyleri var.