Aracılığıyla paylaş


İşlevler ve makrolar arasında seçme önerileri

Çoğu Microsoft çalışma zamanı kitaplığı yordamları derlenmiş veya işlevlerini bir araya, ancak bazı yordamları makro olarak uygulanır.Hem işlev hem de bir yordam makro sürümü üstbilgi dosyası bildirir, sonra işlev bildirimini her zaman görünür çünkü makro tanımı, önceliklidir.Hem işlev hem de bir makro olarak uygulanan yordamı çağırdığınızda, derleyici iki yolla işlev sürümü kullanmaya zorlayabilirsiniz:

  • Rutin adını parantez içine alın.

    #include <ctype.h>
    a = _toupper(a);    // Use macro version of toupper.
    a = (_toupper)(a);  // Force compiler to use 
                        // function version of toupper.
    
  • "Tanımsız bir makro tanımlama" #undef yönergesi:

    #include <ctype.h>
    #undef _toupper
    

Bir işlev ve bir kitaplığı yordamına makro uygulaması arasında seçim yapmak gerekirse, aşağıdaki dengelemeleri göz önünde bulundurun:

  • Boyut ve hızı makroları kullanarak ana yararı daha hızlı yürütme zamanı geldi.Ön-işleme sırasında bir makro (değiştirildi tanımına göre) genişletilir satır içi her zaman kullanılır.Bunu kaç kez bakılmaksızın yalnızca bir kez adlı bir işlev tanımı oluşur.Makro kodu boyutu artabilir, ancak işlev çağrıları ile ilişkili ek yük gerekmez.

  • İşlev değerlendirmesi bir işlev için bir adres; değerlendirir. bir makro yok.Bu nedenle, bir işaretçi gerektiren bağlamlarda makro adı kullanamazsınız.Örneğin, bir işlev işaretçisi, ancak makro değil bir işaretçi bildirebilirsiniz.

  • Tür denetlemesi bir işlev bildirdiğinizde derleyici bağımsız değişken türleri kontrol edebilirsiniz.Bir makro bildirimini yapamazsınız çünkü derleyici makro bağımsız değişken türleri denetleyemez; bağımsız değişken sayısı bulunmadýðýný denetleyebilseniz de bir makro geçirir.

Ayrıca bkz.

Başvuru

crt kitaplığı özellikleri