Çözüldü ifdef nedir? ifdef kullanımı ile sistem nasıl eklenir? ifdef ile eklenmiş sistem nasıl sökülür?

Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.

Hyuna Akali

Full Stack Developer
Grafiker
Usta Üye
Editör
Mesaj
727
Çözümler
20
Beğeni
586
Puan
839
Ticaret Puanı
0
Genellikle files geliştirmek isteyenlerin başlangıç olarak öğrendiği şey GM yapımı , GM kodları , edit item yapımı ve npc içi düzenleme ile başlar ; sonrasında NPC yerleri bakış açıları , boss sabitleme ile devam eder. Ama iş ilerledikçe olan sistemler gözüne batar veya eksik gelir. Benim de öğrenmek istediğim şeyler başlıkta belirttiklerimdir.

Biliyorum konu geniş kapsamlı bir konu ama cevaplanırsa altın niteliği taşıyabilir.
 
Çözüm
Genelde bu tarz işlere başldığımızda kullandığımız birçok şeyin hangi işe yaradığını tam olarak bilmiyoruz. Bu yüzden kafada böyle sorular oluşabiliyor. Şu ana kadar sitemizde böyle bir soru soruldu mu hatırlamıyorum ancak kısaca anlatmak isterim.

#ifdef, #ifndef, #define, #else gibi şeylere makro deniyor. Platformu, mimariyi ve türü belirtmek içinde kullanılır. Metin2'de ise sistem eklerken sıklıkla kullanırız. Genellikle kolaylıkla etkinleştirip devredışı bırakmak için kullanırız.

Örnek verelim.
C++:
Genişlet Daralt Kopyala
#define WHISTLE_YAZIYOR

Şöyle bir sabit atadık.
C++:
Genişlet Daralt Kopyala
#include <stdio.h>

#define WHISTLE_YAZIYOR

int main()
{
#ifdef WHISTLE_YAZIYOR
    printf("Eğer WHISTLE_YAZIYOR tanımlıysa burası yazacak.")
#else
    printf("Eğer WHISTLE_YAZIYOR...
Genelde bu tarz işlere başldığımızda kullandığımız birçok şeyin hangi işe yaradığını tam olarak bilmiyoruz. Bu yüzden kafada böyle sorular oluşabiliyor. Şu ana kadar sitemizde böyle bir soru soruldu mu hatırlamıyorum ancak kısaca anlatmak isterim.

#ifdef, #ifndef, #define, #else gibi şeylere makro deniyor. Platformu, mimariyi ve türü belirtmek içinde kullanılır. Metin2'de ise sistem eklerken sıklıkla kullanırız. Genellikle kolaylıkla etkinleştirip devredışı bırakmak için kullanırız.

Örnek verelim.
C++:
Genişlet Daralt Kopyala
#define WHISTLE_YAZIYOR

Şöyle bir sabit atadık.
C++:
Genişlet Daralt Kopyala
#include <stdio.h>

#define WHISTLE_YAZIYOR

int main()
{
#ifdef WHISTLE_YAZIYOR
    printf("Eğer WHISTLE_YAZIYOR tanımlıysa burası yazacak.")
#else
    printf("Eğer WHISTLE_YAZIYOR tanımlı değilse burası yazacak.")
#endif
}


Sistem tarafından tanınan özel sabitlerde mevcuttur.
Mesela sadece debug ile build ettiğiniz zaman çalışmasını istediğiniz kodlar mevcut.
C++:
Genişlet Daralt Kopyala
#ifdef _DEBUG
    // Debug ile derlendiğinde çalışacak kodlar.
#endif

Eğer #ifndef kullanırsanız tanımlı değilse olacaktır.
C++:
Genişlet Daralt Kopyala
#ifndef _DEBUG
    // Debug hariç diğerleri ile derlendiğinde çalışacak kodlar.
#endif

Daha fazla bilgi almak için:
Linkleri görebilmek için giriş yap veya kayıt ol.
 
Çözüm
Else bloğunun çalışması için sadece service.h de mi define yorum satırı yapılır yoksa tüm her yerde tek tek değişken adı aratıp mı if bloğu yorum satırına çevrilir ?
 
Geri
Üst