@TheAny
C99 Dev-C++ kullansan çalışmadığını görürsün. 90'da zaten compile eder. Sorun 99'da çözüldü çünkü.
Sebep de C90 ve altı default bir f() fonksiyonu atıyor. Bu fonksiyon içine giren her parametreyi alır ve varsayılan olarak int döndürür. Senin fonksiyonun int döndüren basit bir fonk. olduğu için kendisini farkettirmeden çalıştı. Ancak aşağıdaki gibi daha farklı tür döndüren fonksiyonları çalıştıramayacaksın. Artı olarak çalışan fonksiyonuna geri dön ve a(x,y,c,b,h,r) gibi parametreler ver asla uyarı almayacaksın. Bu C'de bir hata ve güncellemelerde düzeltilmiş.
Artı olarak online complara güvenmiyorum yani c99 der 90 çalıştırır belli olmaz DevCpp üzerinden kontrol edebilirsin. (Dosya ismi için kusura bakma sana özel değil. Testleri yaptığım çöp workspace.)
Seninkine benzer basit bir toplama fonksioyonu. (C11 ve C99 compile almadı. C90 çalıştırdı.)
Bahsettiğim int döndürülemeyecek fonksiyon.
C:
#include <stdio.h>
typedef struct {
int a;
float b;
} Test;
int main(void) {
f(0, 1, 2);
return 0;
}
Test f(int a, int b, int c) {
return (Test) { .a = a, .b = (float)b };
}
@TheAny
Yani Online zaten güzel bir ortam değil. C diyorsak aklımıza C11 gelmesi lazım. Standart versiyon bu çünkü. C11'de de buna izin verilmez çünkü büyük hatalar oluşabilir. Artık onda da verirse farklı bir durum söz konusu çünkü ben zaten derleyip çalıştıramadım olmaz çünkü.
Yani bunu çalıştırsanız da bir şey fark etmez üstteki fonksiyonu hiçbir zaman çalıştıramayacaksınız.