Tam Sürümünü Görmek İçin : C de main() kullanmadan kod yazılabilir mi ?
Arkadaşlar cahilliğimi mazur görün ama bu konuyu öğrenmek istiyorum. C kullanarak ama main() fonksiyonunu kullanmadan program yazabilir miyim ? Biliyorsunuz main() i kullandığım anda direk işletim sistemi ile ilgili kodlar devreye giriyo ve ben bunları istemiyorum.
mesela
int a=256;
int b;
if(a>300)
b=750;
böyle bir kodu çalıştırırken main e ihtiyaç duymadığım kesin ama main çağırmadan yazamıyorum bu programı. Var mıdır böyle bir imkanım ? Yardımcı olabilirseniz sevinirim.
Benim şimdiye kadar öğrendiğim "her c programında bir tane main kesinlikle olmalı " idi ama olmak zorunda olmasa ne güzel olurdu mantığı ile bu soruyu soruyorum. Ayrıca Linux gibi işletim sistemlerinin çoğunun bu dille yazıldığını düşünürsek mutlaka bi şekilde işletim sisteminden bağımsız kodlar yazılabilmeli diye düşünüyorum. Bunu nasıl başarabileceğim konusunda bana yardımcı olabilir misiniz ?
main'deki amaç, program başladığı anda nelerin yapılacağı. Yazdığım program başlarken main'i görerek başlar. bu nedenledir ki...
C/C++ da yazdığın kod :
-standartlara bağlı kalman.
-standart ya da cross-platform kütüphaneler kullanman koşulu ile işletim sisteminden bağımsızdır.
Yani işletim sisteminden bağımsız olduğunu söylerken
"Ben kendi yazdığım bir işletim sistemi ile bu kodu memory e yüklesem ve Program Counter ı bu programın ilk buyruk(instruction)unu gösterecek şekilde ayarlasam yazdığım kod sorunsuzca çalışır"
mı demek istiyorsunuz ?
acehreli
15/12/2005, 00:14
main, C standardinin gerektirdigi bazi islemler icin gerekir. Ornegin program parametrelerinin aktarimi... main'den once isletilen kodlar da global nesnelerin kurulmasi ve calisma ortaminin hazirlanmasi icin gereklidir.
Eger gercekten bunlara gerek duymuyorsan, belki de yalnizca kodlari derlemekle yetinmelisin. Sonucta olusan .o, main'e gerek duymayan bir program parcasidir (object file). Ornegin, gcc ile:
gcc -c deneme.c -o deneme.o
Ali
...
"Ben kendi yazdığım bir işletim sistemi ile bu kodu memory e yüklesem ve Program Counter ı bu programın ilk buyruk(instruction)unu gösterecek şekilde ayarlasam yazdığım kod sorunsuzca çalışır&1uot;
mı demek istiyorsunuz ?
binary uyumluluğu değil, kaynak kod anlamında uyumluluktan bahsettim.
diğer işletim sistemindeki kişi , senin programını kendi ortamında derler ve çalıştırılabilir dosyayı elde eder.
obje kodu için değişik formatlar var, euclides açıklayabilir bunları.
bu uyum da yetmez çünki kodun , işletim sistemine çağrılar yapacaktır.
mesela dosya okuma/yazma işlemleri için, GUI için, networking , therads , timers vs..
işletim sistemlerinin API leri farklı..
yani :
1- diğer sistemdeki derleyici, senin kodunu derleyebilmeli. dil standardı burada önemli.
( gcc pekçok işletim sistemi/mimari de kullanılabiliyor. taşınırlık için iyi bir araç.)
2- kullanıdığın kütüphanelerin bu ortamlar için sürümleri olmalı. ( gtk gibi )
ya da native kodu standart bir arayüz ile sunan bir kütüphane kullanman lazım. ( wxWidgets gibi..)
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.