C varsayılan bağımsız değişkenleri
Bir şekilde C bir işlev için varsayılan bağımsız değişkenleri belirtin var mı?
CEVAP
Vay herkes burada bu kadar karamsar. Cevap evet.
Önemsiz değil: sonuna kadar, temel işlevi, destekleyen bir yapı, sarıcı fonksiyon ve makro zorundayız sarıcı işlevi. Tüm bu otomatikleştirme makrolar kümesi var işim; bir kez sen de aynı şeyi yapmak kolay gelir akışını anlamak.
Burada detaylı bir dış bağlantı özeti burada tamamlayacak yüzden başka bir yerde bu kadar yazdım: http://modelingwithdata.org/arch/00000022.htm
Açmak istiyoruz
double f(int i, double x)
varsayılan alan bir fonksiyon içine (i=8, x=3.14). Bir arkadaş yapı tanımlayın:
typedef struct {
int i;
double x;
} f_args;
Yeniden Adlandır işlevi, 7* *ve varsayılanları ve görüşmeleri ayarlayan kapsayıcı bir işlev tanımlayın üs:
double var_f(f_args in){
int i_out = in.i ? in.i : 8;
double x_out = in.x ? in.x : 3.14;
return f_base(i_out, x_out);
}
Şimdi eklemek bir makro, C variadic macros kullanarak. Bu şekilde kullanıcılar, onlar bilmek zorunda değil
aslında f_args
bir yapı yerleştirmek ve her zamanki yaptığınızı düşünüyorum:
#define f(...) var_f((f_args){__VA_ARGS__});
TAMAM, şimdi tüm aşağıdaki çalışır:
f(3, 8); //i=3, x=8
f(.i=1, 2.3); //i=1, x=2.3
f(2); //i=2, x=3.14
f(.x=9.2); //i=8, x=9.2
Nasıl bileşik kesin kurallar için varsayılanları kuralları kontrol edin.
İşe yaramaz bir şey: eksik bir değeri ayırt edemeyiz çünkü f(0)
ve
sıfır. Benim durumumda, bu noktaya dikkat etmek bir şeydir, ama bakım olarak alınabilir
---yarım doğar varsayılan gerçekten sıfırdır.
Bağımsız ve varsayılanları adlı çünkü bence bunu yazmakla sorun yaşadım gerçekten C kodlama daha kolay ve daha eğlenceli. Ve C bu kadar basit olmak için harika olduğunu ve hala yeterince tüm bu mümkün yapmak zorunda.
Matlab varsayılan bağımsız Değişkenler...
Neden Scala derleyicisi varsayılan bağ...
Çoklu havuzu Python.birden çok bağımsı...
Neden Çınlama ve VS2013 ayracı-başlatı...
Fonksiyon değişkenleri tanımlamak için...